Oracle实现主键自动增长

在Oracle中创建表时,在给表字段指定属性时是没有,auto_increment 这个自动增长的属性的,在Oracle中要使用 序列(sequence)和 触发器(trigger)来实现。

例子:

首先创建一个用于测试的表 AzroadLog

create table AzroadLog
(
    id number(12) primary key, -- 主键
    operation_user varchar2(20), 
);

然后我们创建一个序列,用于指定 生成 主键的 值,当然在序列中可以设置很多属性。

--创建自增序列
create sequence test_sequence
increment by 1  -- 自动增长1
start with 1    -- 初始值为1    
nomaxvalue      -- 不设置最大值    
nocycle         -- 不循环
nocache;        -- 不缓存

最后创建触发器,创建一个行触发器,当我们向表 AzroadLog 中插入一行数据时触发。

create or replace trigger insert_test
before insert
on AzroadLog -- 指定表名
for each row  -- 这里表示每一行都会触发
begin
    select test_sequence.nextval into : new.id   form dual;
end;

在insert触发器中赋值时只能使用new,而不能使用old,因为开始表中是不存在任何数据的。

完成上面三个步骤,执行插入语句的SQL会发现插入成功:

insert into AzroadLog(operation_user) values('admin');

 

posted @ 2020-09-23 11:24  一支梨花压海棠  阅读(902)  评论(0编辑  收藏  举报