首页 新闻 赞助 找找看

问一个关于oracle自增列的问题。。

0
悬赏园豆:5 [已解决问题] 解决于 2014-10-08 11:39

在网上看了一下,oracle中的自增列基本都是以创建序列+触发器来实现。

触发器的代码如下:

CREATE OR REPLACE TRIGGER BEFORE_INSERT_XXX
  BEFORE INSERT ON "XXX"
  FOR EACH ROW
BEGIN
  SELECT sqid.nextval INTO :new.SERIALNO FROM dual;
END;

想问一下,是在每次插入时,都要foreach表中所有的行来完成这个操作吗?如果是的话,在数据比较大的时候,效率肯定会有影响。。大家有没有更好的办法呢?

 

我在建表的时候设置默认值为 sqid.nextval,这样是不行的。。

hexllo的主页 hexllo | 菜鸟二级 | 园豆:318
提问于:2014-10-06 20:00
< >
分享
最佳答案
1

你想多了,

for each 不是for 表中所有的行,而是for each Insert 的所有行。

因为Insert into table 有时是多行插入的,很多人在写Triggle的时候都忘了这事。

收获园豆:5
爱编程的大叔 | 高人七级 |园豆:30839 | 2014-10-06 21:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册