Oracle触发器使用
--:NEW 和:OLD使用方法和意义,new 只出现在insert和update时,old只出现在update和delete时。在insert时new表示新插入的行数据,update时new表示要替换的新数据、old表示要被更改的原来的数据行,delete时old表示要被删除的数据。
--创建触发器
CREATE OR REPLACE TRIGGER au_tt_productinfo
AFTER INSERT OR UPDATE OR DELETE ON tt_productinfo
FOR EACH ROW --行级触发器 , 不加则为表级触发器 (每更行一行数据都会调用异常触发器)
--when (new_value.department_id<>80 )
--限制不是必须的。此例表示如果列department_id不等于80的时候,触发器就会执行。
-- local variables here uid varchar2(10);
--SELECT seq_trg_id.NEXTVAL INTO :NEW.e_id FROM dual; 获取最新序列值
BEGIN
UPDATE tt_cidsinfo tc SET tc.cids_name ='wowowo';
IF inserting THEN --插入操作
Dbms_output.put_line('inserting');
ELSIF updating THEN --更新操作
-- Dbms_output.put_line('updating');
-- Dbms_output.put_line(100);
-- Dbms_output.put_line(:OLD.sep_name);
IF :OLD.seque_no=1 THEN
RAISE_APPLICATION_ERROR(-20001, '序号不能等于1'); --抛出异常 -20000 到 -20999 之间
ELSE
INSERT INTO tt_cidsinfo(cids_id,cids_name) VALUES(101,:OLD.sep_name); --通过:new 或则:old 来获取触发器作用表的值
END IF;
ELSIF deleting THEN --删除操作
Dbms_output.put_line('deleting');
Dbms_output.put_line(:OLD.sep_name);
END IF;
END;