日期:2014-05-17  浏览次数:20957 次

触发器相关
现在有一张表,有一个字段ID(数字类型)用来排序,想实现在insert的时候判断ID是否重复,重复的话就把表中原有的该ID以及该ID之后的序号都加1.  在update的时候实现的功能如下面的例子

比如表中有序号为1,2,3,4的数据
现在插入序号为2的数据,则把原先的2,3,4更行成3,4,5

如果将序号为3的数据更新为1,
则把序号1,2改成2,3,然后把3改成1.

如果将序号为2的数据更新为4
则把序号3,4的数据改成2,3,再把2改为4

想求个实现改功能的触发器。。

对oracle语法不太了解,其中的条件判断也不熟,,所以在此求助大家了。

谢谢了哈。
触发器

------解决方案--------------------
create or replace trigger Goods_trigger
before insert on wz_Goods
for each row
begin
select Goods_SEQ.nextval into :NEW.good_id from dual;
end;


楼猪自己再oracle里的trigger 定义触发器 我这个是插入数据后 从序列取值插入进去
------解决方案--------------------
oracle 员工建议尽量不要用触发器
------解决方案--------------------

create or replace trigger ins_tab_simo
before insert on tab_simo for each row
declare is_has number;
begin
  select count(*) into is_has from tab_simo where id = :new.id;
  if is_has = 0 then  
     DBMS_OUTPUT.PUT_LINE('new record');
  else
     update tab_simo set id = id+1
     where id >= :new.id;
  end if;
end;

把里面的tab_simo 改成你的 表名。