Oracle 通过触发器实现ID自增

时间:2023-12-20 17:55:32

  Oracle不像Mysql,SQLServer能够直接设置ID自增,但是可以通过触发器实现ID自增。

  1 创建测试表

  create table t_goods(id number primary key, good_name varchar2(50));

  2 创建序列

  create sequence seq_goods_id
  start with 1
  increment by 1;

  3 创建触发器

  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;

  4 插入测试数据

  insert into t_goods(good_name)
  values('Transforms');

  insert into t_goods(id,good_name)
  values(2,'Lego');

  insert into t_goods(id,good_name)
  values(2,'Cube');

  5 查询测试结果

  Oracle 通过触发器实现ID自增

  可以看出我们使用触发器对ID设置自增之后,在插入数据的时候我们对ID赋值没有起到任何作用,它始终按照触发器设置的模式进行自增。