我使用sequence和trigger方法实现了字段的自动增长,
create or replace trigger trig_autoinc
before insert on ClassInfo
for each row
begin
if (:new.Id is null) then
select ClassInfo_seq.nextval into :new.Id from dual;
end if;
end;
但是当插入不成功的时候确实出现了id的跳跃,就是虽然插入不成功,但是seq的值还是增长了。这个问题应该怎么解决。
另外,网上有人提出下面的方法防止跳id
create or replace trigger trdemo
before insert on t_name
ln number;
for each row
begin
select max(id) into ln from t_name;
new.id = ln+1;
end;
大家得这个方法如何?当数据量很大的时候效果如何?
谢谢
create or replace trigger trig_autoinc
before insert on ClassInfo
for each row
begin
if (:new.Id is null) then
select ClassInfo_seq.nextval into :new.Id from dual;
end if;
end;
但是当插入不成功的时候确实出现了id的跳跃,就是虽然插入不成功,但是seq的值还是增长了。这个问题应该怎么解决。
另外,网上有人提出下面的方法防止跳id
create or replace trigger trdemo
before insert on t_name
ln number;
for each row
begin
select max(id) into ln from t_name;
new.id = ln+1;
end;
大家得这个方法如何?当数据量很大的时候效果如何?
谢谢
解决方案 »
- dbt 做了一个小东西把oracle数据库结构转化为文本文件,方便大家管理和开发
- 请教用asp向long字段插入大量文本的问题
- 怎样对Oracle存储过程进行加密
- 向oralce 的long 或clob类型的字段中插入数据时。报ORA-01704: string literal too long
- OracleOraHome92ManagermentServer无法启动
- trigger,实现插入数据时其他字段的修改?怎么写
- ORA-04091 如何解决,在线等~~~
- 如何对表进行重命名
- 如何实现SQL:同时实现sum()和条件count()语句?分组对组内所有数据求和,同时显示组内的符合条件的记录数
- △▲△▲△Update语句中能否有From、Group By、Order By等子句 ?△▲△▲△
- 今天上来看多了一颗星,散分
- 请教:oracle中如何实现以下功能?
http://www.itpub.net/showthread.php?s=&threadid=93032&highlight=%CC%F8%BA%C5
直接在程序中insert into table_name (col1,col2..) value(id.nextval,....);
相对于触发器比较安全.