sql >> Databasteknik >  >> RDS >> PostgreSQL

Tillåt null i unik kolumn

Detta är ett missförstånd.
Den UNIQUE begränsning gör exakt vad du vill. Flera NULL värden kan samexistera i en kolumn definierad UNIQUE .

Manualen:

I allmänhet överträds en unik begränsning när det finns mer än en rad i tabellen där värdena för alla kolumner som ingår i begränsningen är lika. Två nollvärden anses dock inte vara lika i denna jämförelse. Det betyder att även i närvaro av en unik begränsning är det möjligt att lagra dubbletter av rader som innehåller ett nollvärde i minst en av de begränsade kolumnerna. Detta beteende överensstämmer med SQL-standarden, men vi har hört att andra SQL-databaser kanske inte följer denna regel. Så var försiktig när du utvecklar applikationer som är avsedda att vara bärbara.

Djärv betoning min.

Tänk på att teckentyper tillåter en tom sträng ('' ), vilket inte är en NULL värde och skulle utlösa en unik överträdelse precis som alla andra icke-nullvärden när de anges på mer än en rad.



  1. Activex ListView Control Tutorial-01

  2. En översikt över kluster-till-kluster-replikering

  3. Hur avrundar man till närmaste X minuter med PL/pgSQL?

  4. Hur statement_timestamp() fungerar i PostgreSQL