Froschpopo+2008-01-05 12:06:17--Der Primärschlüssel muss eindeutig sein, das bedeutet ja schon, dass wenn er NULL wäre, er es nur einmal sein dürfte.
Das ist schlicht falsch. SQL hat eine ternäre Logik und
NULL ist dabei so etwas wie ein Mittelding zwischen wahr und falsch. Das bedeutet insbesondere, dass
NULL = NULL nicht etwa wahr sein muss, sondern
NULL sein kann!
Auch ein eindeutiger Schlüssel kann daher theoretisch beliebig oft
NULL sein. Es mag allerdings sein, dass das nicht bei jeder Datenbank möglich ist. Überhaupt muss man mit
NULL bei SQL etwas vorsichtig sein, weil verschiedene Datenbanken mit unter ihre eigenen Vorstellungen haben, wie dieser Wert zu behandlen ist. Eine brauchbare Übersicht findet sich zum Beispiel hier:
NULL Handling (aus der Dokumentation zu SQLite3).
When C++ is your hammer, every problem looks like your thumb.