在网上看了一下,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,这样是不行的。。
你想多了,
for each 不是for 表中所有的行,而是for each Insert 的所有行。
因为Insert into table 有时是多行插入的,很多人在写Triggle的时候都忘了这事。