Mit Trigger Spaltenwert eines Record einer Tabelle2 ändern

Generic1

Benutzer
Beiträge
11
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';
 
Werbung:
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

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?
 
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.
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
 
Werbung:
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?
 
Zurück
Oben