日期:2014-05-16  浏览次数:20460 次

Oracle创建表ID字段关联序列

--创建测试表?
create ? table ? msct_test?
(?
? ? ? ? user_id ? ? ? ? ? number(10),?
? ? ? ? user_name ? ? ? varchar2(32)?
)?
/?

--创建序列?
CREATE ? SEQUENCE ? mscs_test?
? ? INCREMENT ? BY ? 1?
? ? START ? WITH ? 0?
? ? MINVALUE ? 0?
? ? MAXVALUE ? 100000000?
? ? NOCYCLE?
? ? NOORDER?
? ? CACHE ? 20?
/?

--创建触发器?
CREATE ? OR ? REPLACE ? TRIGGER ? insert_mscs_test?
BEFORE ? INSERT ??
ON ? msct_test?
REFERENCING ? NEW ? AS ? NEW ? OLD ? AS ? OLD?
FOR ? EACH ? ROW?
begin?
? ? ? ? select ? mscs_test.nextval ? into ? :new.user_id ? from ? dual;?
end;?
/?

--测试数据?
insert ? into ? msct_test(user_name) ? values( 'BuShi ');?
insert ? into ? msct_test(user_name) ? values( 'KeLinDun ');?
insert ? into ? msct_test(user_name) ? values( 'BillGates ');?

--检查结果?
SQL> ? select ? * ? from ? msct_test;?

? ? ? USER_ID ? USER_NAME?
---------- ? --------------------------------?
? ? ? ? ? ? ? ? ? 0 ? BuShi?
? ? ? ? ? ? ? ? ? 1 ? KeLinDun?
? ? ? ? ? ? ? ? ? 2 ? BillGates?

--注意?
--(1)如果你删除了其中一条或多条记录甚至所有记录,由于使用的是序列,已经使用过的ID将不会被重新使用。?