Code: Select all
ProductVariant
----------------------------
ProductVariantID PK
ProductID FK NOT NULL
VariantID FK NULL
VariantValuesID FK NULL
Variant
-----------------------------
VariantID PK
VariantValues
------------------------------
VariantValuesID PK
VariantID FK NOT NULL
Ich habe eine UNIQUE-Einschränkung für diese Tabelle festgelegt
Code: Select all
ALTER TABLE ProductVariant
ADD CONSTRAINT ProdVarVarValUnique UNIQUE (ProductID, VariantID, VariantValuesID);
ist
Code: Select all
ProductID
1
VariantID
NULL
VariantValuesID
NULL
Wenn ein Unique NULL nicht einschränkt, gibt es eine Möglichkeit, dies beizubehalten? Eindeutige Einschränkung, die in jeder anderen Situation funktioniert, aber auch eine CHECK-Funktion hinzufügen, die keinen neuen Eintrag zulässt, wenn die Eingabe für Variant oder VariantValues NULL ist und bereits eine doppelte ProductID in der Tabelle vorhanden ist? Ich hoffe, dies zu tun, ohne einen Trigger ausführen zu müssen. Ich habe darüber nachgedacht, einfach die Feldeinstellungen VariantID und VariantValuesID in der Tabelle auf NOT NULL zu setzen und dann einfach eine Zeile in den Tabellen Variants und VariantValues einzufügen und zu belassen, die alle NULL-Felder haben. Die Felder VariantID und VariantValuesID müssen BEIDE NULL sein oder BEIDE Felder müssen einen INT-Wert haben.