[跟着hsp步步学习系统]oracle培训学习集锦全360度扫描(11)触发器old,new 与行级与语句级及case when

第四十二讲
在表中添加一条数据,提示“添加了一条数据”
create or replace triger addTriger
after insert on tableAddUser
--for each row
begin
dbms_output.put_line('add a row');
end;
上例中未用for each row,但若加多条时也只提示一次。
故若要提示多次,要加上for each row


语句级的,只会提示一次。
若是加上for each row,只会提示多次的,是行级语句 


在每周的星期六与星期日不能修改表。
create triger trq
before delete on emp
begin if to_char(sysdate,'day') in ('星期六','星期日') then
dbms_output.put_line('can not delete today');
RAISE_APPLICATION_ERROR(-20001,'can not delete.');
end;
挡不住的,因为只是提示一下。要出来一个过程。自定义错误编号 


2.使用条件谓词来精确提示操作
create trigger tr3
before
insert or update or delete on emp
begin
case 
when inserting then dbms_output.put_line('请不要加')
raise_application_error(-2002,'请不要加啊');
when updating then
dbms_output.put_line('请不要加')
raise_application_error(-2003,'请不要加啊');
when deteing then
dbms_output.put_line('请不要加')
raise_application_error(-2005,'请不要删除啊');
end case;
end;
3.old new
特性 insert update delete
old   null    有效   有效
new    有效    有效   null


create trigger tri5
before update on scott.emp
for each row
begin
if :new.sal<:old.sql then
dbms_output.put_line('工资不能低于原来的工资 ')
raise_application_error(-3003,'工资不能低于原工资 ');
else
dbms_output.put_line('原来工资是'||:old.sal||:new.sal);
end if;

end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值