PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SQL (Microsoft) CHECK - Constraint


instinct
2008-03-14, 18:53:08
Nabend!
Hab gerade ein kleines Tief und komme nicht auf die Lösung, ich hoffe ihr könnt mir weiterhelfen. Folgende Konstellation:
- SQL Server 2005
- Tabelle Bestellungen (Bestell_Nr,Kunden_Nr,Datum,...)
- Tabelle Kunden (Kunden_Nr,Name,...)

Was ich will:
Wenn ein Datensatz in die Tabelle Bestellungen eingefügt wird, muss die einzufügende Kunden_Nr auch in der Tabelle Kunden sein.

alter table Bestellungen
add constraint CHECK_K_NR check (Kunden_Nr in (select Kunden_nr from Kunden));

Was mache ich falsch?

Expandable
2008-03-14, 19:20:43
Hmm. Geht das nicht einfach per Foreign Key? Oder kann man einen Foreign Key eintragen, der als Primary nirgends existiert?

Nachtrag: Wie ich erwartet hatte... versuche ich in eine Tabellel mit Foreign Key einen Wert einzutragen, der in der anderen Tabelle als Primary Key nicht existiert, wird eine Exception geworfen.

Crushinator
2008-03-14, 19:24:44
Das geht am sinnvollsten mit Foreign Key, in etwa so:

ALTER TABLE Bestellungen
ADD CONSTRAINT FK_BESTELLUNGEN_KUNDEN FOREIGN KEY (Kunden_Nr)
REFERENCES Kunden (Kunden_Nr);

Achtung Code unüberprüft, da ich gerade kein MSSQL zur Verfügung habe.

instinct
2008-03-14, 19:30:18
Klar, natürlich, daran hab ich natürlich nicht gedacht. Dank dir!