sql >> Database >  >> RDS >> PostgreSQL

Null toestaan ​​in unieke kolom

Dit is een misverstand.
De UNIQUE beperking doet precies wat je wilt. Meerdere NULL waarden kunnen naast elkaar bestaan ​​in een kolom gedefinieerd UNIQUE .

De handleiding:

Over het algemeen wordt een unieke beperking geschonden wanneer er meer dan één rij in de tabel is waar de waarden van alle kolommen in de beperking gelijk zijn. Twee null-waarden worden in deze vergelijking echter niet als gelijk beschouwd. Dat betekent zelfs in de aanwezigheid van een unieke beperking is het mogelijk om dubbele rijen op te slaan die een null-waarde bevatten in ten minste één van de beperkte kolommen. Dit gedrag voldoet aan de SQL-standaard, maar we hebben gehoord dat andere SQL-databases deze regel mogelijk niet volgen. Wees dus voorzichtig bij het ontwikkelen van applicaties die bedoeld zijn om draagbaar te zijn.

Vetgedrukte nadruk van mij.

Houd er rekening mee dat tekentypen een lege tekenreeks toestaan ​​('' ), wat niet . is een NULL waarde en zou een unieke overtreding veroorzaken, net als elke andere niet-null-waarde wanneer deze in meer dan één rij wordt ingevoerd.



  1. Hoe installeer ik sqlcmd &bcp op SUSE

  2. Een lege SQLite-database maken

  3. Asynchrone taken met Django en Celery

  4. Waarom geeft SQL-server deze fout:Kan de waarde NULL niet invoegen in kolom 'id'?