您的位置:首页 > 数据库 > Oracle

如何在Oracle中设置自增长字段

2015-01-23 11:25 330 查看
我们在用MS SQL Server时,可以为表的主键设置为自动加1的效果;但是在Oracle当中,我们是无法直接设置一个字段为自动加1,需要先建立一个Sequence,然后为这个表创建一个Trigger。具体步骤如下:

1.先建立一个Order表格,用如下SQL语句

create table SCOTT.ORDER

(

ID NUMBER(10) not null,

BUYER CHAR(20) not null,

MERCHANDISE VARCHAR2(50) not null,

QUANTITY LONG not null,

UNITPRICE NUMBER(10,2) not null,

TOTALPRICE NUMBER(20,4),

DESCRIPTION NVARCHAR2(1000),

PRIMARY KEY("ID")

)

2.创建一个序列,从10000开始计数,增量为1

create sequence ORDER_ID

minvalue 1

maxvalue 9999999999999999999999999999

start with 10000 --从10000开始生成序列

increment by 1 --增量为1

cache 20; --预存20个序列值在内存中,这样可以提高访问序列的速度

3.为Order表创建一个before insert的触发器,在插入之前将表order的主键设置为上面的序列值.

CREATE OR REPLACE TRIGGER "ORDER_ID_GENERATOR" BEFORE

INSERT ON "SCOTT"."ORDER" FOR EACH ROW --一定要加上For each row,表示该触发器适应于每一条记录

declare

mid number;

begin

select order_id.nextval into mid from dual; --order_id.nextval是获得上面定义的序列ORDER_ID的下一个值

:new.id:=mid; --将得到的序列值赋给表order的主键id, 可以用":new"引用将要插入的一行数据

end;

这样,当执行插入记录的时候,可以这样写

insert into order(buyer,merchandise,quantity,unitprice)values("ABC","Product_ABC",200,10);

Oracle会调用上面创建的触发器将序列值赋值给主键ID。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: