1.触发器的语法
示例:CREATE OR REPLACE TRIGGER triggername
AFTER trigger event OF id_no ON table_name
FOR EACH ROW
1.create or replace 名称 代表创建一个名称为XXX的触发器
2.before | after : 指定触发器是在触发事件发生之前触发还暗示发生之后触发
3.trigger_event:触发事件,在DML触发器中主要为insert、update、delete等
4.table_name: 表名,表示发生触发器作用的对象
5.for each row 表示触发器将为每一行执行
CREATE [OR REPLACE] TRIGGER 触发器名称
-- 操作之前/之后
{BEFORE | AFTER}
--操作属性,更新可以指定列名
{DELETE | INSERT | UPDATE [OF 列名]}
ON 表名
-- 如果存在这条语句,就是行级触发器,否则为语句触发器
[FOR EACH ROW[WHEN(条件)]
2.触发器使用方法示例
- 请写一个触发器,要求插入或更新挂号表时,将病人主索引的病人费别更新成挂号表的费别。
--创建一个MEDREC.CLINIC_AFTER_INSERTANDUPDATE 的触发器 create or replace trigger MEDREC.CLINIC_AFTER_INSERTANDUPDATE --出发时间在事件之前(BEFORE)还是之后(AFTER)执行。 触发事件为插入或者新增 after insert or update on clinic_master --表示触发器将为每一行执行。 for each row --开头 DECLARE begin --条件部分 UPDATE MEDREC.PAT_MASTER_INDEX SET CHARGE_TYPE = :new.CHARGE_TYPE WHERE PATIENT_ID =:new.PATIENT_ID; --结尾 end MEDREC.CLINIC_AFTER_INSERTANDUPDATE
1.行级触发器,针对每条数据
2. :old 和 :new 代表同一条记录
3. :old 表示操作该行之前,这一行的值
4. :new 表示操作该行之后,这一行的值