First, the syntax of the trigger is as follows
CREATE OR REPLACE TRIGGER Trigger_name<before | After | instead of> <insert | Update | Delete> on table_name
[For each ROW]
When (condition)
DECLARE
BEGIN
--Trigger code
END;
Trigger_name is the name of the trigger. <before | After | Instead of> can choose before or after or instead of.
Before means that the trigger is executed before the DML statement is implemented, and after means that the trigger is executed after the DML statement is implemented, and the instead of trigger is used on the update of the view.
<insert | Update | Delete> can select one or more DML statements, and if multiple are selected, separate with or, such as insert or update.
TABLE_NAME is the name of the table associated with the trigger.
[For each row] is optional, and if a for every row is noted, the trigger is a row-level trigger, and the DML statement processes each record executing a trigger;
Otherwise, it is a statement-level trigger that fires once for each DML statement.
When the condition is followed by the trigger's response condition, only the row-level trigger is valid, and the trigger is executed when the record of the operation satisfies condition, otherwise it is not executed.
The condition can be referenced by the new object and the old object (note that it differs from the previous: New and: Old, in code that references a colon) to refer to the record of the operation.
Second, examples
Create or replace trigger Tri_gend_det_sync after insert or update or delete on Gend_detfor each rowdeclare var_hz_count Number (9); Var_hn_count number (9); Var_wj_count number (9); pragma autonomous_transaction;begin---Delete data do if deleting then/* Delete from [email protected] wher E Gend_gen =: Old.gend_gen and gend_option =: old.gend_option;*/delete FROM [Email pro Tected] WHERE Gend_gen =: Old.gend_gen and gend_option = (case when:old.gend_gen = ' rd_pro_id ' then:old . Gend_property1 else:old.gend_option End) And:old.gend_synchro = 1; --suyanjiang 2016-9-18 Delete from Aid_det where exists (select Ai_type from AI_MSTR join Aid_det On ai_type = aid_type where Aid_sync = 1 and Aid_type = ' 6 ') and Aid_c Ode =: Old.gend_option and:old.gend_synchro = 1; --suyanjiang 2016-9-18 if:new. gend_gen= ' Error_code ' then delete from [email protected] where Gend_gen = ' miss_code ' and g End_option =: old.gend_option; End If; Delete FROM [email protected] where Gend_gen =: Old.gend_gen and gend_option =: old.gend_option; End If; ---Insert data to do if inserting then If:new.gend_gen = ' rd_pro_id ' then insert into Aid_det (Aid_type, Aid_co De, Aid_name, Aid_valid, Aid_sync, Aid_rmks, aid_crt_by, Aid_crt_date, aid_mod_by, aid_mod_date) Select ' 6 ',: new.gend_option,: New.gend_name, (case:new.gend_disabled when 0 then 1 else 0 end), 1, ',: NEW.GEND_CRT _by, Sysdate,: New.gend_crt_by, sysdate from dual where isn't exists (SELECT * from aid_det where aid_type = 6 and Aid_code =: new.gend_option); End If; /* Var_hz_count: = 0; Select COUNT (*) into Var_hz_count from [email protected] where Gend_gen =: new.gend_gen and gend_option =: new.gend_option; If Var_hz_count =0 then insert INTO [email protected] (gend_gen,gend_option,gend_name,gend_crt_by,gend_crt_d Ate,gend_property1,gend_property2,gend_property3, Gend_property4,gend_disabled,gend_char1,gend_char2,gend_ch AR3,GEND_CHAR4,GEND_CHAR5,GEND_CHAR6,GEND_QTY1,GEND_QTY2,GEND_PROPERTY5,GEND_PROPERTY6) VALUES (: New.gend_gen,:n Ew.gend_option,:new.gend_name,:new.gend_crt_by,:new.gend_crt_date,:new.gend_property1,:new.gend_property2, (Case When:new.gend_gen = ' Src_cat "then" Else:new.gend_property3 End "): New.gend_property4,:new.gend_d ISABLED,:NEW.GEND_CHAR1,:NEW.GEND_CHAR2,:NEW.GEND_CHAR3,:NEW.GEND_CHAR4,:NEW.GEND_CHAR5,:NEW.GEND_CHAR6,: New.gend_qty1,:new.gend_qty2,: NEW.GEND_PROPERTY5,:NEW.GEND_PROPERTY6); End if;*/Var_hn_count: = 0; Select COUNT (*) into Var_hn_count from [email protected] where GEnd_gen =: New.gend_gen and gend_option = (case when:new.gend_gen = ' rd_pro_id ' then:new.gend_property1 els E:new.gend_option end) And:new.gend_synchro = 1; --suyanjiang 2016-9-18 if var_hn_count =0 and:new.gend_gen = ' rd_pro_id ' and:new.gend_property1 is not Null And:new.gend_synchro = 1 then insert into [email protected] (GEND_GEN,GEND_OPTION,GEND_NAME,GEND_CRT _by,gend_crt_date,gend_property1,gend_property2,gend_property3, Gend_property4,gend_disabled,gend_char1,ge Nd_char2,gend_char3,gend_char4,gend_char5,gend_char6,gend_qty1,gend_qty2,gend_property5,gend_property6, GE ND_PROPERTY7,GEND_PROPERTY8,GEND_PROPERTY9,GEND_PROPERTY10,GEND_PROPERTY11,GEND_PROPERTY12) VALUES (: New.gend_ge N,:new.gend_property1,:new.gend_name,:new.gend_crt_by,:new.gend_crt_date, ',: New.gend_property2, (case when: New.gend_gen = ' Src_cat ' Then ' Else:new.gend_property3 end ',: New. gend_property4,:new.gend_disabled,:new.gend_char1,:new.gend_char2,:new.gend_char3,:new.gend_char4,:new.gend_ Char5,:new.gend_char6,:new.gend_qty1,:new.gend_qty2,: New.gend_property5,:new.gend_property6,:new.gend_propert Y7,:NEW.GEND_PROPERTY8,:NEW.GEND_PROPERTY9,:NEW.GEND_PROPERTY10,:NEW.GEND_PROPERTY11,:NEW.GEND_PROPERTY12); elsif var_hn_count =0 and:new.gend_gen <> ' rd_pro_id ' and:new.gend_synchro = 1 then insert INTO [emai L protected] (gend_gen,gend_option,gend_name,gend_crt_by,gend_crt_date,gend_property1,gend_property2,gend_ Property3, GEND_PROPERTY4,GEND_DISABLED,GEND_CHAR1,GEND_CHAR2,GEND_CHAR3,GEND_CHAR4,GEND_CHAR5,GEND_CHAR6, Gend_qty1,gend_qty2,gend_property5,gend_property6, Gend_property7,gend_property8,gend_property9,gend_prope RTY10,GEND_PROPERTY11,GEND_PROPERTY12) VALUES (: New.gend_gen,:new.gend_option,:new.gend_name,:new.gend_crt_by,:n Ew.gend_crt_date,:new.gend_property1,:new.gend_propErty2, (Case when:new.gend_gen = ' src_cat ' and then ' Else:new.gend_property3 end '): new.gend_p ROPERTY4,:NEW.GEND_DISABLED,:NEW.GEND_CHAR1,:NEW.GEND_CHAR2,:NEW.GEND_CHAR3,:NEW.GEND_CHAR4,:NEW.GEND_CHAR5,: New.gend_char6,:new.gend_qty1,:new.gend_qty2,: new.gend_property5,:new.gend_property6,:new.gend_property7,:new . gend_property8,:new.gend_property9,:new.gend_property10,:new.gend_property11,:new.gend_property12); End If; if:new.gend_gen= ' Error_code ' then var_wj_count: = 0; Select COUNT (*) into Var_wj_count from [email protected] where Gend_gen = ' miss_code ' and Gend_option =: new.gend_option; If Var_wj_count =0 then insert INTO [email protected] (Gend_gen,gend_option,gend_name,gend_crt_by,gend_c Rt_date,gend_property1,gend_property2,gend_property3, Gend_property4,gend_disabled,gend_char1,gend_char2 , Gend_char3,gend_char4,gend_char5,gend_char6,gend_qty1,gend_qty2) VALUES (' Miss_code ',: New.gend_option,:new.gend_name,:new.gend_crt_by,:ne W.gend_crt_date,:new.gend_property1,:new.gend_property2,:new.gend_property3,: New.gend_property4,:new.gend_ DISABLED,:NEW.GEND_CHAR1,:NEW.GEND_CHAR2,:NEW.GEND_CHAR3,:NEW.GEND_CHAR4,:NEW.GEND_CHAR5,:NEW.GEND_CHAR6,: New.gend_qty1,:new.gend_qty2); End If; End If; Select COUNT (*) into Var_wj_count from [email protected] where Gend_gen=:new.gend_gen and Gend_optio N=:new.gend_option; If Var_wj_count=0 And:new.gend_gen in (' Sbgd_scheme ', ' Db_part ') then insert INTO [email protected] (Gend_gen, Gend_option,gend_name,gend_property1,gend_property2,gend_property3,gend_property4, GEND_DISABLED,GEND_CHAR1,GEND_CHAR2,GEND_CHAR3,GEND_CHAR4,GEND_CHAR5,GEND_CHAR6, GEND_QTY1,GEND_QTY2,GEND_PROPERTY5,GEND_PROPERTY6)VALUES (: New.gend_gen,:new.gend_option,:new.gend_name,:new.gend_property1,:new.gend_property2,:new.gend_ Property3,:new.gend_property4,: New.gend_disabled,:new.gend_char1,:new.gend_char2,:new.gend_char3,:new.gend_ CHAR4,:NEW.GEND_CHAR5,:NEW.GEND_CHAR6,: New.gend_qty1,:new.gend_qty2,: New.gend_property5,:new.gend_property 6); End If; End If; If updating then Update [email protected] Set gend_name =: new.ge Nd_name, gend_crt_by =: new.gend_crt_by, Gend _crt_date =: new.gend_crt_date, gend_property1 =: new.gend_property1, Gend_property2 =: new.gend_property2, Gend_property3 =: new.g End_property3, Gend_propertY4 =: new.gend_property4, gend_disabled =: new.gend_disabled, GEND_CHAR1 =: new.gend_char1, gend_char2 =: new.gend_char2, GEND_CHAR3 =: New.gend_char3, GEND_CHAR4 =: NEW.GEND_CHAR4, GEND_CHAR5 =: NEW.GEND_CHAR5, GEND_CHAR6 =: new.gend_char6, gend_qty1 =: new.gend_qty1, Gend_qty2 =: new.gend_qty2, gend_property5 =: new.gend_p Roperty5, Gend_property6 =: new.gend_property6 where Gend_gen =: New.gend_gen and gend_option =: new.gend_option; Update [Email proteCTED] Set gend_name =: New.gend_name, gen D_crt_by =: new.gend_crt_by, gend_crt_date =: new.gend_crt_date, Gend_property1 =: new.gend_property1, Gend_property2 =: New.gen D_property2, Gend_property3 = (case when:new.gend_gen = ' src_cat ' Then ' else:n Ew.gend_property3 end), Gend_property4 =: New.gend_property4, gend_disabled =: new.gend_disabled, gend_char1 =: new.gend_char1, GEND_CHAR2 =: new.gend_char2, GEND_CHAR3 =: New.gend_char3, GEND_CHAR4 =: NEW.GEND_CHAR4, GEND_CHAR5 =: NEW.GEND_CHAR5, GEND_CHAR6 =: NEW.GEND_CHAR6, Gend_qty1 =: new.gend_qty1, Gend_qty2 =: New.gend_qty2, Gend_property5 =: new.gend_property5, Gend_property6 =: new.gend _property6, Gend_property7 =: New.gend_property7, Gend_property8 =: new.gend_property8, Gend_property9 =: New.gend_property9, Gend_property10 =: New.gend_property10, Gend_property11 =: New.gend_property11, Gend_property12 =: new.gend_property12 where Gend_gen =: New.gend_gen and gend_option = (case when:new.gend_gen = ' rd_pro_id ' the N:new.gend_property1 ElSe:new.gend_option end) And:new.gend_synchro = 1; if:new.gend_gen= ' error_code ' then update [email protected] Set Gend_name =: new.gend_name, gend_crt_by =: new.gend_crt_by , Gend_crt_date =: new.gend_crt_date, Gend_prope Rty1 =: new.gend_property1, Gend_property2 =: New.gend_property2, Gend_property3 =: new.gend_property3, Gend_property4 =: new.gend_p Roperty4, gend_disabled =: new.gend_disabled, ge ND_CHAR1 =: new.gend_char1, gend_char2 =: new.gend_char2, GEND_CHAR3 =: New.gend_char3, GEND_CHAR4 =: NEW.GEND_CHAR4, GEND_CHAR5 =: NEW.GEND_CHAR5, GEND_CHAR6 =: NEW.GEND_CHAR6, Gend_qty1 =: new.gend_qty1, Gend_qty2 =: new.gend_qty2 where Gend_gen = ' miss_code ' and gend_option =: new.gend_option; End If; End If; Commit;end Tri_gend_det_sync;
Trigger Basic syntax