PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Разрешаване на нула в уникална колона

Това е недоразумение.
UNIQUE ограничението прави точно какво искаш. Множество NULL стойностите могат да съществуват едновременно в колона, дефинирана UNIQUE .

Ръководството:

По принцип едно уникално ограничение се нарушава, когато има повече от един ред в таблицата, където стойностите на всички колони, включени в ограничението, са равни. Две нулеви стойности обаче не се считат за равни в това сравнение. Това означава, че дори при наличието на уникално ограничение е възможно да се съхраняват дублиращи се редове, които съдържат нулева стойност в поне една от ограничените колони. Това поведение отговаря на стандарта SQL, но чухме, че други SQL бази данни може да не следват това правило. Затова бъдете внимателни, когато разработвате приложения, които са предназначени да бъдат преносими.

Удебелен акцент мой.

Имайте предвид, че типовете знаци позволяват празен низ ('' ), което не a NULL стойност и ще задейства уникално нарушение, точно както всяка друга стойност, различна от нула, когато се въведе в повече от един ред.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL:Променете OWNER на всички таблици едновременно в PostgreSQL

  2. docker postgres с първоначални данни не се запазва при комитации

  3. Drop колона не премахва препратките към колони изцяло - postgresql

  4. Рекурсивна заявка на Postgres с row_to_json

  5. Postgres поддържа ли вложени или автономни транзакции?