none
Sybase to MS SQL: Foreign Keys RRS feed

  • Frage

  • Moin moin,

    ich versuche gerade eine Sybase-Datenbank nach MS SQL zu portieren. Leider bekomme ich bei manchen Foreign Keys Probleme, wo ich mir leider derzeit nicht weiterhelfen kann. Und zwar habe ich z.B. folgenden Foreign Key in Sybase:

    alter table Tabelle1
       add foreign key "FK_Name" (Spalte1)
          references Tabelle1 (Spalte2)
          on update cascade
          on delete cascade;

    Dieser obenstehe Foreign Key geht soweit. Wenn ich nun aber diesen in folgendes MS SQL-Statement umwandle ...

    alter table Tabelle1
    add constraint "FK_Name" foreign Key (Spalte1)     
    references Tabelle1 (Spalte2)
    on update cascade
    on delete cascade;


    ... bekomme ich folgende Fehlermeldung:

    Introducing FOREIGN KEY constraint 'FK_Name' on table 'Tabelle1' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.

    Kann mir vielleicht jemand das Problem erklären und auch vielleicht die Lösung dazu?  Bin leider derzeit ziemlich ratlos.

    Gruß und besten Dank im Voraus

    Gordon

    Dienstag, 11. Dezember 2012 13:02

Antworten

  • Das heißt das du einen Zyklus in einem Graph von CASCADE-Anweisungen hast. D.h. Table A -> cascade delete -> Table B -> cascade delete -> Table A. So oder so ähnlich. Das ist nicht erlaubt.

    Der einfachste Trick, da es sich eh nach Redesign anhört: Verzichte erstmal auf die CASCADEs ganz und pflege sie nur dort nach, wo sie wirklich gebraucht werden. Ggf. musst du auch mit Triggern arbeiten.

    Dienstag, 11. Dezember 2012 14:13

Alle Antworten

  • Das heißt das du einen Zyklus in einem Graph von CASCADE-Anweisungen hast. D.h. Table A -> cascade delete -> Table B -> cascade delete -> Table A. So oder so ähnlich. Das ist nicht erlaubt.

    Der einfachste Trick, da es sich eh nach Redesign anhört: Verzichte erstmal auf die CASCADEs ganz und pflege sie nur dort nach, wo sie wirklich gebraucht werden. Ggf. musst du auch mit Triggern arbeiten.

    Dienstag, 11. Dezember 2012 14:13
  • Danke dir für den Ratschlag.  Werde ich dann erstmal so handhaben....

    Mittwoch, 12. Dezember 2012 11:06