Syntax Rules: Create [or replace] trigger [mode.] trigger name
Before | after insert | Delete | (update of column name)
On Table Name
[For each row]
When Condition
PL/SQL Block
Note:
The meaning of for each row is that in a statement that operates a table, each row that succeeds is triggered once. If you do not write a row that is a table-Level Trigger, no matter how many rows are operated, trigger only once;
The emergence of the when condition indicates that the trigger may be triggered during DML operations, but the trigger may not necessarily do the actual work. For example, when the condition after the when is not true, the trigger simply skips the PL/SQL block;
Example:
SQL Code
- Create Or Replace TriggerWf_tri_user_list beforeInsert Or Update Or Delete OnUser_list
-
- ForEach row
-
- Declare
-
- UID varchar2 (10); useq varchar2 (10); asql varchar2 (200); namea varchar2 (200); nameb varchar2 (200 );
- Begin
-
- Namea: =Null;
-
- Nameb: =Null;
-
- If insertingThen
-
- Insert IntoWflow. bpm_org_user (userid, username, diaplayname, SEQ)Values(: New. user_id,: New. user_name,: New. user_realname,: New. user_id );
- Dbms_output.put_line ('Insert Trigger IsChufale .....');
-
-
- EndIf;
-
- If updatingThen
-
- If (: New. user_name <>: Old. user_name)And(: New. user_realname <>: Old. user_realname)Then
- Namea: =: New. user_name;
-
- Nameb: =: New. user_realname;
-
- Asql: ='UpdateWflow. bpm_org_userSetDiaplayname =: 1WhereUsername =: 2 ';
-
- ExecuteImmediate asql using namea, nameb;
-
- Else
- If: New. user_name <>: Old. user_nameThen
-
- Namea: =: New. user_name;
-
- Asql: ='UpdateWflow. bpm_org_userSetUser_name =: 1WhereUsername =: 2 ';
-
- ExecuteImmediate asql using namea;
- Else
-
- If: New. user_realname <>: Old. user_realnameThen
-
- Nameb: =: New. user_realname;
-
- Asql: ='UpdateWflow. bpm_org_userSetDiaplayname =: 1WhereUsername =: 2 ';
- ExecuteImmediate asql using nameb,: Old. user_id;
-
- EndIf;
-
- EndIf;
-
- EndIf;
-
- EndIf;
-
- If deletingThen
- UpdateWflow. bpm_org_jobusersSetUserid = 0Where: Old. user_id = useridAndParentid =-1;
-
- Delete FromWflow. bpm_org_jobusersWhereUserid =: Old. user_id;
-
- DeleteWflow. bpm_org_userWhereUserid =: Old. user_id;
- EndIf;
-
- Commit;
-
- End;
-
Keywords:
: New and: Old use methods and meanings. New only appears in insert and update, and old only appears in update and delete. New indicates the row data to be inserted during insert, new indicates the new data to be replaced during update, and old indicates the original row to be changed, old indicates the data to be deleted.
Note:
Commit cannot be used in triggers.