oracle 给已存在的表增加主键自增约束

如果使用的是hibernate的主键自增约束,请参照点击打开链接

这里只记录针对Oracle本身的自增约束。

步骤大概有3步,

1.创建表

2.创建序列sequence

3.设置触发器以应用sequence到表的主键

这里以AD_AUDIT_PLAN表为例。

create sequence AD_AUDIT_PLAN_SEQUENCE minvalue 1 maxvalue 99999999999999999999 start with 1 increment by 1 cache 20;

这里创建序列完毕。序列可以在数据库中找到(感觉类似创建了一张表)。这里是说创建一个叫AD_AUDIT_PLAN_SEQUENCE的序列,里面的最小值是1,最大值是20个9(多少个取决于你主键的位数,也可以在主键范围内取值),然后从1开始,每次自增1,缓存为20.
create or replace trigger ad_audit_plan_tg before insert on ad_audit_plan
for each row when (new.id is null) 
  begin 
    select ad_audit_plan_sequence.nextval into :new.id from dual;
  end ad_audit_plan_tg;

这里创建触发器,并把表跟序列关联起来。我理解的是,序列只是一个存储1.2.3.4.5.。。。。的地方,当表中每次插入一条数据的时候就从序列中取一个数字当做主键插入表中,这个数字是唯一的,只能取一次,取过了序列里就没有这个数了。

这里还要注意,end后面要跟上触发器名,不然执行不成功。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值