none
Zwei Fremdschlüssel auf zwei verschiedene Spalten RRS feed

  • 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.



    Sonntag, 23. Februar 2020 20:07

Antworten

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"

    Montag, 24. Februar 2020 09:13
  • 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

    Montag, 24. Februar 2020 09:19
    Moderator
  • Gibt es hierzu wirklich keine Lösung?
    Donnerstag, 5. März 2020 14:57
  • 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

    Freitag, 6. März 2020 07:25