首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

触发器有关

2013-11-06 
触发器相关现在有一张表,有一个字段ID(数字类型)用来排序,想实现在insert的时候判断ID是否重复,重复的话就

触发器相关
现在有一张表,有一个字段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 改成你的 表名。

热点排行