Benutzer mit den meisten Antworten
Zwei Fremdschlüssel auf zwei verschiedene Spalten

Frage
-
Hallo
beim Wechsel einer abzulösenden SQL Datenbank auf den SQL Server haben wir folgendes Problem:
Es besteht eine Tabelle "Texte" mit Kopf- und Fusstexte. PK ist die "Text_Nr"
eine weitere Tabelle "Formular" hat zwei Spalten "KopftextNR" und "FusstextNR"
Beim DELETE eines Textes (in TEXTE) sollen die Spalten in der FORMULAR Tabelle AUF NULL gesetzt werden. Der erste FK geht anstandslos durch. Der zweite wirft einen Fehler. siehe unten..
Irgend ein Verständnis meinerseits fehlt hier. Bisher ging das problemlos. Wie ist hier die richtige Vorgehensweise beim SQL Server.
ALTER TABLE [Formular ] ADD CONSTRAINT [FK_F120_REF_12924_F040] FOREIGN KEY ([UE_FussTextNr]) REFERENCES [TEXTE] ([TEXT_NR]) ON DELETE SET NULL; ALTER TABLE [Formular ] ADD CONSTRAINT [FK_F120_REF_129240_F040] FOREIGN KEY ([UE_KopfTextNr]) REFERENCES [TEXTE] ([TEXT_NR]) ON DELETE SET NULL; -- Failed (16 ms) -- [Microsoft][SQL Server Native Client 11.0][SQL Server]Das Einführen der FOREIGN KEY-Einschränkung "FK_F120_REF_129240_F040" für die F120-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.
- Bearbeitet Harry Hahn Sonntag, 23. Februar 2020 20:10
- Typ geändert Ivan DragovMicrosoft contingent staff, Moderator Montag, 2. März 2020 11:55 Keine Rückmeldung
- Typ geändert Ivan DragovMicrosoft contingent staff, Moderator Freitag, 13. März 2020 12:06
Antworten
-
Hallo Harry,
ich denke, Du solltest auf die Löschweitergabe bei den FK-Constraints verzichten und lieber einen INSTEAD OF Trigger verwenden!
HTH!
Einen schönen Tag noch, Christoph - http://www.insidesql.org/blogs/cmu
- Als Antwort vorgeschlagen Ivan DragovMicrosoft contingent staff, Moderator Freitag, 13. März 2020 12:06
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Freitag, 20. März 2020 12:37
Alle Antworten
-
Die regel muss explizit angegeben werden:
https://www.mssqltips.com/sqlservertip/2365/sql-server-foreign-key-update-and-delete-rules/
"on delete set null"
Was denkst Du, was im SQL Statement steht? Genau das. Die Meldung laut zudem ganz anders und das Grundproblem ist ebenfalls nicht, dass da eine Angabe fehlen würde.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport -
Hallo Harry,
ich denke, Du solltest auf die Löschweitergabe bei den FK-Constraints verzichten und lieber einen INSTEAD OF Trigger verwenden!
HTH!
Einen schönen Tag noch, Christoph - http://www.insidesql.org/blogs/cmu
- Als Antwort vorgeschlagen Ivan DragovMicrosoft contingent staff, Moderator Freitag, 13. März 2020 12:06
- Als Antwort markiert Ivan DragovMicrosoft contingent staff, Moderator Freitag, 20. März 2020 12:37