Announcement

Collapse
No announcement yet.

Trigger feuert nicht FOREIGN KEY Einschränkung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Trigger feuert nicht FOREIGN KEY Einschränkung

    Hallo,

    Hoffe hier kann mir jemand helfen. Bin, was die Triggerprogrammierung betrifft noch relativ unerfahren. Mit Datenbanken kenne ich mich aus auch mit SQL Server. Benutze SQL für ein Projekt SQl Server Express 2008 R2.

    Gegeben:


    Habe drei Tabellen. Nennen wir Sie A,B,C

    A = Primärschlüssel Tabelle steht ganz links
    B = Steht rechts davon enthält den Fremdschlüssel
    C = steht ganz rechts und stellt eine Zwischentabelle dar
    D = steht rechts von Tabelle C (irrelevant für das Problem)


    Enthaltene Attribute (Spalten):


    A = PK1 und weitere übernommene Schlüsselfelder
    B = FK1 und weitere übernommene Schlüsselfelder
    C = Schlüssel aus B und Schlüssel aus D Tabelle weitere übernommene Schlüsselfelder

    Trigger:


    Tabelle A enthält einen INSERT Trigger. Wenn hier ein Datensatz erstellt wird, dann soll Tabelle B mit Werten gefüllt werden, die er aus Tabelle A entnimmt. (Werte die geschrieben werden sind eine Feste Anzahl an FK + Schlüsselfelder)

    Tabelle B enthält auch eienen INSERT Trigger. Wenn der erste Trigger Tabelle B gefüllt hat dann soll der zweite Trigger Tabelle C füllen.

    Einschränkungen:

    Zwischen A und B besteht eine 1muss bis 1* Beziehung
    Zwischen B und C besteht eine 1muss bis 1* Beziehung

    => Fremdschlüsseleinschränkung (Referentielle Integrität) ist vorhanden.

    Ausführung:

    Wenn ich nur den Trigger der Tabelle A ausfürhre (zweiten Trigger entferne), dann wird Tabelle B durch den Trigger gefüllt.

    Wenn ich dann anstatt des zweiten Trigger der Tabelle B das SQL skript manuell per Button ausführe wird auch die Tabelle C gefüllt.

    Das soll er ja alles so machen.

    Wenn ich nun den Trigger auf A erstelle und den Trigger auf B (ansattt der manuellen Ausführung) dann knallt es.

    Fehlernachtrcht:

    Die INSERT Anweisung steht in Konflikt mit der FOREIGN KEY Einschränkung. Der Konflikt tritt dabei in der Tabelle B auf.

    Verstehe nicht, warum er, wenn ich den zweiten Trigger manuell ausführe kein Fehler bringt, wenn er beide Trigger automatisch ausführt diese Meldung erscheint.

    Wurde Tabelle B vielleicht zum Auslösezeitpunkt des zweiten Trigger (Trigger Tabelle B) noch nicht durch den Trigger von A gefüllt? Muss ich Tabelle B aktualisieren bevor er den Trigger B feuern kann?

    Für Ideen wäre ich Dankbar.
    Wenn nötig kann ich auch mal den Quellcode einstellen, aber der Funktioniert ja eingentlich.

    Danke Thomas
    Zuletzt editiert von Christian Marquardt; 14.06.2017, 08:19.
Working...
X