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

Oracle中实现主键的默认自增长

?????? 很多时候在做和数据库相关的操作的时候,主键不能由用户去填写或涉及多个用户同时操作一张表的时候,就需要对主键进行严格的控制,这里主要讲Oracle中如何实现主键的自增长。

?????? 主要由三步组成,1)建表;2)建立序列;3)建立触发器(目的是在表插入数据的时候启用序列生成的值),我们通过下面的例子来说明:

??????? 1)建立对应的数据库表:

??????? drop table TEST;

??????? create table?TEST
??????? (
????????? ?bsm???????? NUMBER(10) not null,
?????????? xh????????? NUMBER(10),
????????? ?posx??????? NUMBER(15,5),
?????????? posy??????? NUMBER(15,5)
???????? );

?????? alter table?TEST add constraint PK_TEST primary key (BSM);

??????? 2)建立序列

????? drop sequence TEST_SEQ;

?????? create sequence TEST_SEQ
?????? minvalue 1
?????? maxvalue 999999999999999999
?????? start with 1
?????? increment by 1
?????? cache 20;

注:建立序列,最小值为1,从1开始计数和每次递增量为1;

??????? 3)建立触发器

?????? drop trigger test_trig;

?????? CREATE OR REPLACE TRIGGER "test_trig"
?????? BEFORE INSERT ON?test
?????? REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
?????? DECLARE
?????? BEGIN
?????????? SELECT TEST_SEQ.NEXTVAL INTO :NEW.BSM FROM DUAL;
?????? END test_trig;

通过上述三步就完成了主键自动生成的设定,以后就可以根据业务需求直接插入业务数据就可以了

??????