解决实际问题:
在应用开发中,有时候数据的操作保存是在用户登录系统之后进行操作,有时候数据可能由系统管理员直接操作,这种情况下会导致前后数据不一致(假如在系统中,删除一条数据,是从两个表中进行删除。如果系统管理员在数据库中进行删除可能只删除一条,在这种情况下会造成前后端数据的不一致)。这时候,可以在表中增加触发器。
在Oracle中提供5种类型的触发器:语句触发器、行触发器、instead of 触发器、系统条件触发器和用户触发器
1.创建语句级触发器(只执行一次)
create or replace trigger tri_yj
before update on stu //只在修改的条件下触发
begin
if updating then
dbms_output.put_line('触发语句触发器');
end if;
end;
create or replace trigger tri_yj
before insert or update or delete on stu //在插入、修改、和删除的情况下执行
begin
if updating or inserting or deleting then
dbms_output.put_line('触发语句触发器');
end if;
end;
2. 创建行级触发器(执行多次)
CREATE OR REPLACE TRIGGER TRI_HJ
AFTER UPDATE OR DELETE