Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Mit Trigger Spaltenwert eines Record einer Tabelle2 ändern

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von Generic1, 19 November 2014.

  1. Generic1

    Generic1 Benutzer

    Hallo,

    ich hab schon länger keinen Trigger mehr geschrieben, deshalb diese Frage.
    Ich möchte einen Spaltenwert eines Record einer Tabelle2 ändern, wenn in Tabelle 1 alle Records, die auf den Record in Tabelle2 zeigen, einen bestimmten Wert haben.
    Also:

    Tabelle1:

    ID FK_Tabelle2 VALUE
    1 77 WERT2
    2 77 WERT2
    3 77 WERT1

    Tabelle2:
    ID VALUE
    77 WERT1 -- von WERT1 auf WERT2 wenn sich Record mit ID 3 von WERT1 auf WERT2 ändert

    Könnte mir da jemand hilfestellung geben - mein wissen über trigger ist ein bisschen eingerostet.
    Der Trigger sollte in einer MS SQL laufen.
    Besten Dank

    Das wäre mein erster Versuch (zwar für eine Derby DB aber halt mal ein erster versuch):

    CREATE TRIGGER ROOT.MeinTrigger
    AFTER UPDATE ON Tabelle1
    REFERENCING OLD AS Tabelle1_SpalteVonTabelle1
    FOR EACH ROW MODE DB2SQL
    UPDATE Tabelle2 SET Tabelle2_SpalteVonTabelle2 = 'Anderer Wert';
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Irgendwie versteh ich die Logig dahinter nicht. Wenn das eine Primary Key -> Foreign Key - Geschichte ist oder sein soll: dann machst Du prinzipiell was falsch.

    Was soll einklich passieren, wenn es sicht auf Wert3 ändert?
     
  3. Hony%

    Hony% Datenbank-Guru

    Eine VIEW dürfte bei diesem Problem als Lösung naheliegender sein.

    Ansonsten hier ein einfacher Trigger in der Syntax für SQLite:
    Code:
    CREATE TRIGGER Check
    AFTER UPDATE
    ON FK_Generic
    WHEN ((
    SELECT COUNT(Value) AS ValueCount
      FROM FK_Generic
      WHERE Generic_FK = new.Generic_FK  
      AND Value = 'Wert2'
      GROUP BY Generic_FK, Value
    )
    =
    (
      SELECT COUNT(Value) AS SumCount
      FROM FK_Generic
      WHERE Generic_FK = new.Generic_FK
      GROUP BY Generic_FK
    ))
    BEGIN
      UPDATE Generic
      SET Value = 'Wert2'
      WHERE ID = new.Generic_FK;  
    END
    
     
  4. ukulele

    ukulele Datenbank-Guru

    Ich würde auch erstmal eine View bevorzugen. Bei einem Trigger müsstest du dir erstmal die Frage stellen, was passiert bei Insert oder Delete?
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden