触发器中列的更新如何判断

Wind_Sword 2010-07-02 10:26:34
要在触发器中判断一列是否更新,语法怎么写?
...全文
203 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wind_Sword 2010-07-02
  • 打赏
  • 举报
回复
不错,这样就对了
vitahuang 2010-07-02
  • 打赏
  • 举报
回复
create or replace trigger trg_update
after update on 表名
begin
if updating('字段1') then
dbms_output.put_line('字段1更新了');
endif;
end;

Wind_Sword 2010-07-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tangren 的回复:]

SQL code
if updating(col1) then
--你的代码
end if ;
[/Quote]
这个方法好像不行啊,语法上就不能通过
tangren 2010-07-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wind_sword 的回复:]

我用
if :new.col1<>:old.col1 then
end if;
行吗?语法也没错
[/Quote]
也是可以的
tangren 2010-07-02
  • 打赏
  • 举报
回复
另外也可以将整个触发器声明时限定在某一字段(col1)更新触发,如:
create or replace trigger trg_test 
after update of col1 on table1
for each row
declare
--你的声明
begin
--你的代码
end;
Wind_Sword 2010-07-02
  • 打赏
  • 举报
回复
我用
if :new.col1<>:old.col1 then
end if;
行吗?语法也没错
mr_michael_lee 2010-07-02
  • 打赏
  • 举报
回复
触发器触发使用有两种:after和before。

CREATE [OR REPLACE] TIGGER 触发器名
[before|after] --触发时间
[insert|update|delete] --触发事件
ON 表名
[FOR EACH ROW]
BEGIN
pl/sql语句
END;

update:数据库修改会触发此触发器;

tangren 2010-07-02
  • 打赏
  • 举报
回复
if updating(col1) then
--你的代码
end if ;

17,138

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧