Geht das… UNIQUE NULLS DISTINCT (…)


Apache DerbyBigQueryDb2 (LUW)H2MariaDBMySQLOracle DBPostgreSQLSQL ServerSQLite2009201120132015201720192021⊘ 3.5.7 - 3.42.0⊘ 2008R2 - 2022✓ 15+⊘ 8.3 - 14⊘ 11gR1 - 21c⊘ 5.0 - 8.0.33⊘ 5.1 - 10.11⊘ 1.4.191 - 2.1.214⊘ 10.15.1.3 - 10.16.1.1
  1. Unterstützt keine Null-baren Spalten in Unique-Constraints (T591)

Unique-Constraints akzeptieren den optionalen Nulls distinct-Zusatz, mit dem man festlegt, dass ein Null-Wert einen anderen Null-Wert in derselben Spalte des Constraints nicht ausschließt.

CREATE TABLE … (
   …,
   UNIQUE NULLS DISTINCT (…)
)

Implementierungsdefiniertes Verhalten

Ohne Angabe von Nulls [not] distinct ist das Default-Verhalten von Unqiue-Constraints Implementierungsdefiniert. Beachte, dass Nulls not distinct Unqiue-Constraints Null-Werte als unterschiedliche Werte behandeln dürfen, wenn alle Spalten des Constraints den Null-Wert haben.0

Apache DerbyBigQueryaaDb2 (LUW)aaH2MariaDBMySQLOracle DBbcPostgreSQLSQL ServerSQLitedefault: nulls distinctdefault: nulls not distinct
  1. Unterstützt keine Null-baren Spalten in Unique-Constraints (T591)
  2. Wenn alle Spalten des Constraints Null sind
  3. Wenn manche, aber nicht alle Spalten des Constraints Null sind

Normative Referenzen

Der Zusatz nulls distinct gehört zum optionalen Feature F292, „UNIQUE null treatment“.

Beachte, dass SQL:2016 und vorherige Standards nulls distinct als Standardverhalten vorgeschrieben haben. Im genannten Entwurf is das Standardverhalten allerdings von der Implementierung vorgegeben.

20 Jahre SQL-Evolution kann man nicht an einem Tag nachholen. Abonniere den Newsletter via E-Mail, Twitter oder RSS um sukzessive aufzuholen und modern-sql.com am Radar zu behalten.

Über den Autor

Foto von Markus Winand

Markus Winand gibt auf modern-sql.com Einblick in SQL und zeigt, wie es von verschiedenen Systemen unterstützt wird. Zuvor machte er use-the-index-luke.com, was er noch immer wartet. Markus kann als Trainer, Sprecher und Berater auf winand.at engagiert werden.

Sein Buch kaufen

Titelbild von „SQL Performance Explained“: Eichhörnchen läuft durchs Grass

Die Essenz: SQL-Tuning auf 200 Seiten

Jetzt Kaufen
(Taschenbuch und/oder PDF)

Sein Training

Markus verwandelt veraltetes SQL-92-Wissen in solides und zeitgemäßes SQL-Know-how

Erfahren Sie mehr»

Fußnoten

  1. CD 9075-2:202x(E), 4.25.3.2 Unique constraints (insb. NOTE 52).

Mit Markus Winand verbinden

Markus Winand auf LinkedInMarkus Winand auf XINGMarkus Winand auf Twitter
„modern SQL“ von Markus Winand ist unter einer Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License lizenziert.
Impressum | Kontakt | KEINE GEWÄHR | Handelsmarken | Datenschutz und DSGVO | CC-BY-NC-ND 3.0 Lizenz