oracle设置自动增长序列

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

oracle设置⾃动增长序列
我们在⽤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。

相关文档
最新文档