深海迷航存档在哪里在哪里下载?

mysql触发器new old详解
触发器new old详解
mysql触发器new old:
&NEW . column_name&或者&OLD . column_name&.这样在技术上处理(NEW | OLD . column_name)新和旧
的列名属于创建了过渡变量(&transition variables&)。
对于INSERT语句,只有NEW是合法的;对于DELETE语句,只有OLD才合法;而UPDATE语句可以在和NEW以及
OLD同时使用。下面是一个UPDATE中同时使用NEW和OLD的例子。
CREATE TRIGGER tr1 &
BEFORE UPDATE ON t22 &&
FOR EACH ROW &&
SET @old = OLD.s1; &&
SET @new = NEW.s1; &&
现在如果t21表中的s1列的值是55,那么执行了&UPDATE t21 SET s1 = s1 + 1&之后@old的值会变成55,
而@new的值将会变成56。
触发器的执行间隔:FOR EACH ROW子句通知触发器每隔一行执行一次动作,而不是对整个表执行一次。
create table a( &
id int primary key auto_increment,##设置为自动递增 &
name varchar(10) &
设置初始值为1000 :
ALTER & TABLE & tablename & AUTO_INCREMENT=1000;用户名:SHUIMOMO
文章数:138
评论数:27
访问量:439090
注册日期:
阅读量:1297
阅读量:3317
阅读量:433929
阅读量:1121595
51CTO推荐博文
&如删除触发器&ALARMRECORD_TG :
CREATE OR REPLACE TRIGGER ALARMRECORD_TG AFTER
DELETE ON &TYZHUSER&.&ALARMRECORD& REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
Insert into OldALARMRECORD values(:old.recordid,:old.cardid,:old.alarmstate,:old.alarmid,:old.alarmdetail,:old.webalarm,
:old.webalarmtime,:old.smsalarm,:old.smsalarmtime,:old.recordtime,:old.readerid,:old.otherinfo,
:old.tqalarm,:old.tqalarmtime);
要说的是 & :old &与:new 的区别:
顾名思义,new是新插入的数据,old是原来的数据
insert只会有new,代表着要插入的新记录
delete只会有old,代表着要删除的记录
update由于执行的是先删除旧的记录,再插入新的记录,因此new和old都会有,且含义与上面的相同
注:update触发器,可根据具体需求选择记录旧记录还是新记录。
了这篇文章
类别:未分类┆阅读(0)┆评论(0)触发器_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
上传于|0|0|文档简介
&&什么是触发器?
一段特殊的存储过程
特点是,不能手动调用,只在满足触发条件的时候自动执行;
按级别分:数据库级、模式级、表级、行级。。。。。
你可能喜欢触发器中OLD和NEW的使用_其它数据库-织梦者
当前位置:&>&&>& > 触发器中OLD和NEW的使用
触发器中OLD和NEW的使用
一、old和new在Oracle中不区分大小写;
二、old和new可以用在declare中也可以用在begin里的sql语句;(只会在begin中的sql语句里用)
三、old表示插入之前的值,new表示新插入的值;
(old用在删除和修改,new用在添加和修改)(但是用delete new值也没有报错,不知道怎么回事)
create or replace trigger trigger_name
--触发器名不能过长,否则报错:ORA-00972:标识符过长
before insert or update
of colunm1,column2,、、、
on table_name
for each row
--行级触发器,一般表记的会报错,没有深入研究
--声明参数
pragma autonomous_
--自治事务
parameter_name 参数类型;
if inserting then
insert into table_name values(:new.字段名1,:new.字段名2,、、、);
elsif updating then
update table_name set 表字段名=:new.字段名,、、、 where 字段名=:new.字段名;
--自治事务的提交,若没有自治事务,触发器是不允许有commit的
sql语句中的表与触发器的表不相同,如果相同且不加自治事务会导致报错:ORA-04091:表XXX发生了变化,触发器/函数不能读它;
即使添加了自治事务,要是当表的某个字段发生变化,对另一张表进行操作之后,又对该有触发器的表字段进行修改,
也会报错:ORA-00060:等待资源时检测到死锁;
以上就是触发器中OLD和NEW的使用的全文介绍,希望对您学习和使用数据库有所帮助.
这些内容可能对你也有帮助
更多可查看其它数据库列表页。
猜您也会喜欢这些文章

我要回帖

更多关于 深海迷航官方下载 的文章

 

随机推荐