In DB2 ist es möglich, nur einen einzigen Auslöser für beiden Updates haben und einfügen?
Frage
Ich muss den Auslöser erstellen (s), die die Prüfung meiner Tabelle halten. Der Auslöser soll sowohl Insert und Update auszuführen.
zur Zeit ich bin mit zwei Trigger
Ein für Einfügen :
CREATE TRIGGER SCH.TRG_TBL1_AFT_I
AFTER INSERT ON SCH.TBL1
REFERENCING
NEW AS n
FOR EACH ROW
MODE DB2SQL
INSERT INTO SCH.TBL1_AUDIT
VALUES( .. ,, .. );
Ein weiteres für update
CREATE TRIGGER SCH.TRG_TBL1_AFT_U
AFTER UPDATE ON SCH.TBL1
REFERENCING
NEW AS n
FOR EACH ROW
MODE DB2SQL
INSERT INTO SCH.TBL1_AUDIT
VALUES( .. ,, .. );
Aber der Punkt ist, wenn es möglich, einen einzelnen Auslöser, in DB2 zu erstellen, für die Aufgabe zu tun? [Sofern beide Trigger das Gleiche tun.]
Lösung
Sorry, DB2 bietet keine Möglichkeit, Update und Insert zu kombinieren Trigger zusammen.
Andere Tipps
Versuchen Sie, diese
CREATE or replace TRIGGER PASSENGER_TR01_BEFORE_IUD
BEFORE
DELETE
OR UPDATE OF FIRST_NAME
OR INSERT ON PASSENGER
REFERENCING
OLD AS oldRow
NEW AS newRow
FOR EACH ROW
WHEN (1=1)
Begin
Declare ACTION Char(1) Default '';
-- Use Case/When to inquire trigger-event
Case
When INSERTING Then
Set ACTION='I';
When UPDATING Then
Set ACTION='U';
When DELETING Then
Set ACTION='D';
Else
Set ACTION='N';
End Case;
-- Use If/Then/Else to inquire trigger-event
If INSERTING Then
Set ACTION='I';
ElseIf UPDATING Then
Set ACTION='U';
ElseIf DELETING Then
Set ACTION='D';
Else
Set ACTION='N';
End If;
End
Ja, es ist möglich.
können Sie weitere Informationen finden Sie hier CREATE OR REPLACE TRIGGER SET_SALARY
NO CASCADE
BEFORE UPDATE OR INSERT ON employee
REFERENCING NEW AS n OLD AS o
FOR EACH ROW
WHEN( o.edlevel IS NULL OR n.edlevel > o.edlevel )
BEGIN
-- Give 10% raise to existing employees with new education level.
IF UPDATING THEN SET n.salary = n.salary * 1.1;
-- Give starting salary based on education level.
ELSEIF INSERTING THEN
SET n.salary = CASE n.edlevel WHEN 18 THEN 50000
WHEN 16 THEN 40000
ELSE 25000
END;
END IF;
END
Diese Funktion ist nun in der Version von DB2 10.x Es ist schon verfügbar Sinus 9.7.x