updating\deleting\inserting 例子: if inserting then ... end if;
多谢, 那么我如何区分更新这条记录和更新这个条记录的一个字段呢? 一个是BEFORE UPDATE 一个是BEFORE UPDATE OF XXX 能够写在一起吗?下面判断的时候如何做呢? if updating then能区分开这两种马?
CREATE OR REPLACE TRIGGER 名称 AFTER UPDATE OF 字段1,字段2 ... ON 表名 REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW DECLARE integrity_error EXCEPTION; 声明变量 BEGIN 主题语句 EXCEPTION WHEN integrity_error THEN BEGIN -- 例外信息 END; END;
楼上的回答只是如何触发更新各个字段的写法。 我想要得是在一个trigger下分两种情况处理,一种是针对update(任意字段),一种是针对update of 字段(指定的字段)
用触发器谓词deleting,updating,inserting
declare trigger tri_emp before insert or delete or update on emp for each row begin if inserting then dbms_output.put_line('插入操作'); elsif deleting then dbms_output.put_line('删除操作'); elsif updating then dbms_output.put_line('更新操作'); end if; end;
例子:
if inserting then
...
end if;
那么我如何区分更新这条记录和更新这个条记录的一个字段呢?
一个是BEFORE UPDATE 一个是BEFORE UPDATE OF XXX
能够写在一起吗?下面判断的时候如何做呢?
if updating then能区分开这两种马?
AFTER UPDATE
OF 字段1,字段2 ... ON 表名
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
integrity_error EXCEPTION;
声明变量
BEGIN
主题语句
EXCEPTION
WHEN integrity_error THEN
BEGIN
-- 例外信息
END;
END;
我想要得是在一个trigger下分两种情况处理,一种是针对update(任意字段),一种是针对update of 字段(指定的字段)
before insert or delete or update on emp for each row
begin
if inserting then
dbms_output.put_line('插入操作');
elsif deleting then
dbms_output.put_line('删除操作');
elsif updating then
dbms_output.put_line('更新操作');
end if;
end;