Frage

Also habe ich diese Tabelle mit einem zusammengesetzten Schlüssel haben, im Grunde ‚userID‘ - ‚data‘ muss eindeutig sein (siehe meine andere Frage SQL-Tabelle - halb einzigartige Reihe )

Allerdings habe ich mich gefragt, ob es möglich war, nur um diese in Kraft treten, wenn Benutzer-ID nicht Null ist? Damit meine ich, ‚userID‘ - ‚data‘ muss für Nicht-Null-Benutzer-IDs eindeutig sein

Oder bin ich den Holzweg?

Danke
Mala

War es hilfreich?

Lösung

anwenden SQL-Constraints für jede Zeile in der Tabelle. Sie können sie nicht davon abhängig machen, basierend auf bestimmten Datenwerte.

Wenn Sie jedoch NULL statt Null verwenden könnte, können Sie die eindeutige Einschränkung umgehen. Eine eindeutige Einschränkung ermöglicht es, mehrere Einträge, die NULL haben. Der Grund dafür ist, dass Einzigartigkeit Mittel nicht zwei gleiche Werte existieren können. Gleichheit bedeutet value1 = value2 wahr sein muss. Aber in SQL, NULL = NULL ist unbekannt , nicht wahr.

CREATE TABLE MyTable (id SERIAL PRIMARY KEY, userid INT, data VARCHAR(64));

INSERT INTO MyTable (userid, data) VALUES (   1, 'foo');
INSERT INTO MyTable (userid, data) VALUES (   1, 'bar');
INSERT INTO MyTable (userid, data) VALUES (NULL, 'baz');

So weit so gut, jetzt könnte man denken, die folgenden Anweisungen auf die eindeutige Einschränkung verletzen, aber sie tun nicht:

INSERT INTO MyTable (userid, data) VALUES (   1, 'baz');
INSERT INTO MyTable (userid, data) VALUES (NULL, 'foo');
INSERT INTO MyTable (userid, data) VALUES (NULL, 'baz');
INSERT INTO MyTable (userid, data) VALUES (NULL, 'baz');
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top