oracle序列与触发器问题

Oracle不能像mysql那样直接在表中创建主键自增,但是可以创建序列自增,当sql执行插入语句时可以调用创建好的自增序列,模板为

SELECT 序列名.NEXTVAL as 字段名 FROM DUAL

也可以使用触发器将自增序列整合到表中实现自动自增,执行语句为

create or replace trigger tr_insert_good
  before insert on goods for each row
  begin
  select seq_goods_id.nextval
  into :new.id
  from dual;
  end;

当需要更改序列的起始值是不能直接使用

alter sequence 序列名 start with 100;

这样会报错

ORA-02283: 无法变更启动序列号

但是可以使用

alter sequence 序列名 increment by 90;

来修改每次自增值,然后执行一次插入,将自增值增到想要的数字,然后执行

alter sequence 序列名 increment by 1;语句将每次自增值改回1就行;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值