Announcement

Collapse
No announcement yet.

Fremdschlüßel einrichten

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

  • Fremdschlüßel einrichten

    Hallo,

    die Frage an sich gibt es bestimmt schon, hab es nur leider nicht gefunden.

    Ich habe in meiner DB folgende Tables
    STA, Unt, Kra, VTR

    ich möchte folgende Regeln vom Server ausführen lassen...

    Wenn in der Tabelle STA ein neuer DS angelegt wird soll in den anderen Tabellen ebenfalls ein DS mit der in STA erzeugten DBID (PrimSchl not NULL)
    angelegt werden.

    wie muss ich die Fremdschlüßel weitergabe schreiben?
    Ich hab keine Ahnung was ich tue aber ich will es lernen

  • #2
    Neu anlegen geht mit foreign keys nicht, nur Aktualisierung des Keys beim Ändern oder löschen. Dafür musst du einfach einen Insert-Trigger an die STA-Tabelle hängen, siehe create trigger

    bye,
    Helmut

    Comment


    • #3
      pack eine sp aussen rum die zwei inserts beinhaltet.

      @hwoess
      wie meinst du das? wenn der letzte Verweis auf den pk gelöscht wird, wird auch die pk zeile in der primärschlüsseltabelle gelöscht? Oder was soll das für ein Szenario sein?

      Comment


      • #4
        Ich meinte das so:
        bei einem Fremdschlüssel kann man (zumindest beim SQL-Server) angeben, was mit den Schlüsselfeldern in den Child-Datensätzen passieren soll, wenn sich der Master-Datensatz ändert. Dafür gibt es dieses ON CASCADE UPDATE/DELETE. Aber das hat nichts mit INSERT am Hut.
        Dewegen mein Vorschlag mit dem Trigger, den man sich vereinfacht wie deine stored procedure vorstellen kann, nur dass er nicht von der Applikation aufgerufen werden muss, sondern dieses durch die Datenbank selber beim Anlegen eines neuen Schlüssels vorgenommen wird --> Fehlerminimierung.

        bye,
        Helmut

        Comment


        • #5
          Ach ja, sollte ich das in der Reihenfolge missverstanden haben, also nicht zu einem neuen Master einen Childsatz automatisch erstellen sondern umgekehrt, dann müsste man, damit es nicht applikationsabhängig ist, an die Childtabelle einen INSTEAD-OF-INSERT-Trigger hängen, der fängt das Insert so ab, dass keine Fehlermeldung kommt, schaut nach ob es den master schon gibt, legt diesen an wenn nicht, und macht dann schlußendlich doch das Insert in die Childtabelle.

          bye,
          Helmut

          Comment

          Working...
          X