oracle 创建一个简单触发器,为什么达不到效果。
修改某条数据的时候,如果修改的是ID列,在修改该ID的值时候,去查询该表中parent_id的值,如等于修改前的值 ,则也修改成新值。 一句话,就是让 id和parent_id同步。如下是我写的触发器。
举例说明:
select * from gap_ele_agency where id in (2797,2793);
结果如下表:

现在修改第一条数据。
update gap_ele_agency set id=2794 where id=2793;
要达到的效果是 第二条的parent_id为2794。
报错如下:

--建立触发器 修改预算单位ID的时候 同时修改以该ID为父节点的parent_id
---2
create or replace trigger tr_changeID
before update on gap_ele_agency
for each row
begin
if updating('id') then
update gap_ele_agency set gap_ele_agency.parent_id = :new.id where gap_ele_agency.parent_id= :old.id ;
end if;
end;
举例说明:
select * from gap_ele_agency where id in (2797,2793);
结果如下表:

现在修改第一条数据。
update gap_ele_agency set id=2794 where id=2793;
要达到的效果是 第二条的parent_id为2794。
报错如下:

...全文
相关推荐
Oracle创建主键自增表(sql语句实现)及触发器应用
主键自增在插入数据的时候是很实用的,可以获取并操作返回的插入记录的ID,接下来介绍Oracle如何创建主键自增表,感兴趣的你可以了解下,就当是巩固知识,希望此文对你有所帮助
oracle触发器的创建与使用
介绍数据库触发器的PPT。内容包括:存储过程的创建与使用;存储过程的查看、编辑和删除;触发器的创建与使用;触发器的查看、编辑、重命名和删除
关于oracle触发器before和after的应用问题
详细整理了oracle中before和after的使用问题
oracle 触发器实时调用java 中http接口
oracle insert数据成功之后调用触发器,触发器调用存储过程,存储实时调用java http
oracle创建触发器实例
很详细的oracle创建触发器的例子


基础和管理
