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

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/11476.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论