创建序列
create sequence polygonsonversion_seq
increment by 1
start with 1
nomaxvalue
nocycle cache 10;
创建触发器
create or replace trigger polygonsonversion_trigger
before insert on polygonsonversion
for each row
declare
nextid number;
begin
if :new.OBJECTID is null or :new.OBJECTID=0 then
select polygonsonversion_seq.nextval into nextid from sys.dual;
:new.OBJECTID:=nextid;
end if;
end polygonsonversion_trigger;
初次向表中插入数据时候不会报错,再次执行时会报错违反唯一约束,因为序列每次是从1开始的,再次插入数据时候数据表中已经有数据了,还从1开始就会报错。
解决方案:从数据表中已有数据的行数开始自增
string sql1 = "select count(*) from " + tableName;
int count1=1;
using (OracleDataReader dr = queryReader(sql1))
{
while (dr.Read())
{
count1 = Convert.ToInt32(dr["count(*)"])+1;
}
}
sql1 = string.Format("create sequence {0}_seq increment by 1 start with " + count1 + " nomaxvalue nocycle cache 10", tableName);