[SQL Server] Foreign Key-Problem 2 (2xQuelltabelle; ON DELETE CASCADE)
-
Ich möchte wissen, ob dies wieder mal eine SQL-Server Spezialität ist, oder ich hier ein Denkfehler habe. Hintergrund ist, das ich eine Tabelle habe deren Schlüssel sich aus zweimal der Id einer anderen Tabelle zusammensetzt, und ich eine Löschweitergabe mittels ON DELETE CASCADE ermöglichen will.
Situation (Vereinfacht dargestellt):
CREATE TABLE [T1] ( [Id] [int] IDENTITY(1, 1) NOT NULL, PRIMARY KEY([Id]) ) CREATE TABLE [T2] ( [Id1] [int] NOT NULL, [Id2] [int] NOT NULL, PRIMARY KEY([Id1], [Id2]) ) ALTER TABLE [T2] ADD CONSTRAINT [FK_T2_Id1] FOREIGN KEY ([Id1]) REFERENCES [T1] ([Id]) ON DELETE CASCADE ALTER TABLE [T2] ADD CONSTRAINT [FK_T2_Id2] FOREIGN KEY ([Id2]) REFERENCES [T1] ([Id]) ON DELETE CASCADE
Dies lässt der SQL Server nicht zu (Error message 1785 occurs when you create a FOREIGN KEY constraint that may cause multiple cascade paths; Das Einführen der FOREIGN KEY-Einschränkung 'FK_T2_Id2' für die 'T2'-Tabelle kann Schleifen oder mehrere Kaskadepfade verursachen. Geben Sie ON DELETE NO ACTION oder ON UPDATE NO ACTION an, oder ändern Sie andere FOREIGN KEY-Einschränkungen.)
Ist dies nur unter dem SQL-Server oder allgemein nicht möglich?
-
Du hast logische Fehler in deinem SQL:
Zeile 11 primkey-Definition ist falsch.
Zeile 18 Fremdschlüssel muß T1 referenzieren.
-
witte schrieb:
Du hast logische Fehler in deinem SQL:
Zeile 11 primkey-Definition ist falsch.
Zeile 18 Fremdschlüssel muß T1 referenzieren.Hast recht, ist mir beim Vereinfachen passiert, nun korrigiert. Ändert aber nichts an dem beschriebenen Problem.
-
Also in postgresql funktioniert es.
-
witte schrieb:
Also in postgresql funktioniert es.
Also wieder eine SQL Server Unzulänglichkeit *seufz*... (Anderseits scheine ich dann ja wenigstens mit meiner Logik richtig zu liegen).