– 触发器(门铃) 监听器 create or replace trigger 名字 before|after insert|delete|update on 表名 for each row begin sql 语句 ; –必须要加分号结束sql语句。 end; – 结合序列完成表中字段的值自动增加 create or replace trigger t1 before insert on ta for each row – :对于每行数据都会触发该触发器 begin – :new 新添加到数据库的当前这条数据记录 – :old 要删除或者修改的原数据 – :new.字段 新添加到数据库的当前这条数据中的指定字段 :new.id := s5.nextval; – := 赋值操作 end;
insert into ta(name,hir,mubiao)values(‘小白’,sysdate,30); – update delete 操作的时候我会将更新之前的数据备份到一张表中 create table copyta as select * from ta where 1=2;
create or replace trigger t2 before delete or update on ta for each row begin insert into copyta values(:old.id,:old.name,:old.hir); end;
– :old 表示的是数据库中原有的数据
– 删除触发器 drop trigger t4;
select * from ta; delete from ta; – 如果是周六 周日 每天 18:00 到第二天的9:00点不能修改表 select to_char(sysdate,’HH24:MI’) from dual;
– sql编程中不能书写 双引号 create or replace trigger t4 before update or delete on ta for each row begin if (to_char(sysdate,’DY’)in (‘星期六’,’星期日’)) or (to_char(sysdate,’HH24:MI’) not between ‘09:00’ and ‘18:00’) then –注意’09:00’中9前面的0不能省略,否则和转换后的日期字符串不匹配 raise_application_error(-20001,’这个时间段是不能修改表信息的’); end if; end; – raise_application_error() oracle中自定义异常的函数 select * from ta;
