欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

触发器有关

更新时间: 2014-01-05 02:12:31 责任编辑: Author_N1

 

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

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:12:31
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/6971/
本文WWW.DOC100.NET DOC100.NET版权所有。