在oracle的触发器里,怎么判断修改了某个表的某个字段为1的情况
时间:2011-12-21
来源:互联网
作者: charlesxu 发布时间: 2011-12-21
处理...
为了能够读取当前行改变前后各列的值,需要借助于行触发器定义的关联名。
OLD-修改之前的行
NEW-修改之后的行
对于INSERT语句只有NEW,而OLD没有意义
对于DELETE语句只有OLD,而NEW没有意义
如果是在PL/SQL块内访问关联名,则需要在关联名前加“:”,如同访问外部变量
如果在PL/SQL块外访问关联名,则不需要加“:”
作者: LuiseRADL 发布时间: 2011-12-21
SQL code
CREATE OR REPLACE TRIGGER TRG_TEST AFTER UPDATE ON table1 FOR EACH ROW Begin IF(:new.XXX=1) then .... ELSE ... END IF; End;
作者: zujinsheng 发布时间: 2011-12-21
CREATE OR REPLACE TRIGGER TR_DML_TableAAA AFTER INSERT OR DELETE OR UPDATE ON TableAAA FOR EACH ROW when new.account=1 //想这么加条件,但是对于把account修改成其它值的update也要插入值的 BEGIN IF INSERTING THEN INSERT INTO LOG values ('root',SYSDATE,'Other','AAAA-01-0001','修改用户操作成功【'||new.ACCOUNT||'】',0); ELSIF UPDATING THEN INSERT INTO HANDLELOG values ('root',SYSDATE,'Other','AAAA-01-0002','修改用户操作成功【'||new.ACCOUNT||'】',0); ELSIF UPDATING THEN //应该在这加判断是否把account改成1 INSERT INTO HANDLELOG values ('root',SYSDATE,'Other','AAAA-01-0002','修改用户操作成功【'||111111||'】',0); END IF; END;
作者: charlesxu 发布时间: 2011-12-21
IF(:new.XXX=1) and updating then
....
ELSEIf updating then
...
ELSEIf inserting then
...
ELSEIf deleting then
...
END IF;
这样写行吗?
额..你的描述 我没看清楚..不过基本就着这样了..
SQL code
CREATE OR REPLACE TRIGGER TRG_TEST
AFTER UPDATE ON table1
FOR EACH ROW
Begin
IF(:new.XXX=1) then
....
ELSE
...
END IF;
End;
作者: charlesxu 发布时间: 2011-12-21
IF updating then IF :new.abcd = 1 then ... ELSE ... END IF; ELSIF inserting then ... ELSIF deleting then ... END IF;
作者: forgetsam 发布时间: 2011-12-21
所以在写触发器时要判断是修改记录的情况,还是做逻辑删除(也就是把account改为1)的情况,还是插入的情况
作者: charlesxu 发布时间: 2011-12-21
SQL code
CREATE OR REPLACE TRIGGER TR_DML_AAA AFTER INSERT OR UPDATE ON tableAAA FOR EACH ROW BEGIN IF INSERTING THEN INSERT INTO HANDLELOG values (SYSDATE,'Other','AAAA-01-0001','添加用户操作成功【'||:new.ACCOUNT||'】',0); ELSIF UPDATING THEN IF (:new.USER_STATUS=2) THEN INSERT INTO HANDLELOG values (SYSDATE,'Other','AAAA-01-0003','删除用户操作成功',0); ELSE INSERT INTO HANDLELOG values (SYSDATE,'Other','AAAA-01-0002','修改用户基本信息操作成功【'||:new.ACCOUNT||'】',0); END IF; END IF; END;
作者: charlesxu 发布时间: 2011-12-21
values (SYSDATE,'Other','AAAA-01-0001','添加用户操作成功【'||:new.ACCOUNT||'】',0);
作者: charlesxu 发布时间: 2011-12-21
SQL code
CREATE OR REPLACE TRIGGER TRG_TEST AFTER UPDATE or INSERT or DELETE ON table1 FOR EACH ROW Begin IF updating then IF (:new.abcd = 1) then ... ELSE ... END IF; ELSIF inserting then ... ELSIF deleting then ... END IF; End;
明白你的意思了,可是要怎么判断update时把:new.account改成1和其它情况呢?
IF(:new.XXX=1) and updating then
....
ELSEIf updating then
...
ELSEIf inserting then
...
ELSEIf deleting then
...
E……
作者: zujinsheng 发布时间: 2011-12-21
作者: charlesxu 发布时间: 2011-12-21
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28