none
[SQL Compact] Primärschlüsselwert kann nicht gelöscht werden... RRS feed

  • Frage

  • Hallo,

    Ich bekomme beim Löschen immer eine Fehlermeldung es scheint das irgendwas mit den Beziehungen falsch läuft. Alles weitere auf diesen Bild:

    http://www.contragaming.de/Beziehungskiste.JPG


    Der Primärschlüsselwert kann nicht gelöscht werden, da noch Verweise auf diesen Schlüssel vorhanden sind. [ Foreign key constraint name = FK_History_Adress ]

    Lieben Gruß
    Joel
    Montag, 9. November 2009 20:26

Antworten

  • Hallo Joel,

    SQL Server Compact unterstützt keine SetNull Aktion, wie man bei CREATE TABLE sehen kann.
    Deswegen mußt Du die Historie Daten entweder löschen oder manuell auf einen gültigen Schlüssel
    (dafür Adresse reservieren). Sinnvoller dürfte aber im allgemeinen das Löschen sein, da niemand
    mehr die Historie zuordnen kann.

    Gruß Elmar

    Montag, 9. November 2009 20:39
    Beantworter
  • Hallo Joel,

    damit es funktioniert müssen die Einstellung der Datenbank und des ForeignKeyConstraint zueinander passen.
    Sinnvoll ist im allgemeinen, die FOREIGN KEY Einschränkung in der Datenbank auf CASCADE zu stellen,
    so dass beim Löschen in der primären Tabelle (Adresse) die sekundären (Historie) mitgelöscht werden.
    Ansonsten müßte zunächst alle Detailsätze manuell gelöscht werden, was i. a. langsamer ist.

    Mehr dazu findest Du unter Hierarchische Aktualisierung

    Gruß Elmar
    Dienstag, 10. November 2009 11:49
    Beantworter

Alle Antworten

  • Hallo Joel,

    SQL Server Compact unterstützt keine SetNull Aktion, wie man bei CREATE TABLE sehen kann.
    Deswegen mußt Du die Historie Daten entweder löschen oder manuell auf einen gültigen Schlüssel
    (dafür Adresse reservieren). Sinnvoller dürfte aber im allgemeinen das Löschen sein, da niemand
    mehr die Historie zuordnen kann.

    Gruß Elmar

    Montag, 9. November 2009 20:39
    Beantworter
  • Wenn ich das auf Cascade stelle funktioniert es auch nicht.
    Montag, 9. November 2009 21:08
  • Hallo Joel,

    damit es funktioniert müssen die Einstellung der Datenbank und des ForeignKeyConstraint zueinander passen.
    Sinnvoll ist im allgemeinen, die FOREIGN KEY Einschränkung in der Datenbank auf CASCADE zu stellen,
    so dass beim Löschen in der primären Tabelle (Adresse) die sekundären (Historie) mitgelöscht werden.
    Ansonsten müßte zunächst alle Detailsätze manuell gelöscht werden, was i. a. langsamer ist.

    Mehr dazu findest Du unter Hierarchische Aktualisierung

    Gruß Elmar
    Dienstag, 10. November 2009 11:49
    Beantworter