Oracle- 表的自增长创建

  Oracle创建自增长要先写序列还要去写触发器,不像MSSQLSERVER那样方便。但也是麻烦,记录如下:

  Oracle中,可以为每张表的主键创建一个单独的序列,然后从这个序列中获取自动增加的标识符,把它赋值给主键。例如一下语句创建了一个名为customer_id_seq的序列,这个序列的起始值为1,增量为2。

create sequence customer_id_seq increment by 2 start with 1

一旦定义了customer_id_seq序列,就可以访问序列的curval和nextval属性。

  • curval:返回序列的当前值
  • nextval:先增加序列的值,然后返回序列值

  以下sql语句先创建了customers表,然后插入两条记录,在插入时设定了id和name字段的值,其中id字段的值来自于customer_id_seq序列。最后查询customers表中的id字段。

create table customers(id int primary key not null, name varchar(15)); insert into customers values(customer_id_seq.nextval, 'name1'); insert into customers values(customer_id_seq.nextval, 'name2'); select id from customers;

  如果在oracle中执行以上语句,查询结果为:

  

  通过触发器自动添加id字段

  从上述插入语句可以发现,如果每次都要插入customer_id_seq.nextval的值会非常累赘与麻烦,因此可以考虑使用触发器来完成这一步工作。

  创建触发器trg_customers

create or replace
trigger trg_customers before insert on customers for each row begin select CUSTOMER_ID_SEQ.nextval into :new.id from dual; end;

  插入一条记录

insert into customers(name) values('test'); 

  这是我们会发现这一条记录被插入到数据库中,并且id还是自增长的。

  

 

  创建的序列可以在这里查看到:

  

 

  原文地址:http://www.cnblogs.com/xwdreamer/archive/2012/06/08/2542277.html

转载于:https://www.cnblogs.com/cxeye/p/4207634.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值