创建Oracle触发器用于表中序列值自增长(Helloblock写作)
SQL> conn scott/oracle
使用scott用户操作,不要使用sys帐号操作。
1、创建一张测试表tb1:
SQL> create table tb1
(id int primary key,
name varchar2(20)
);
2、创建序列seq_id:
SQL> create sequence seq_id
minvalue 1 --最小值
start with 1 --初始值
increment by 2 --每次增长量
maxvalue 999999999999 --最大值
nocache --序列不放在缓存中
nocycle; --序列不循环
3、查看序列是否可用:
SQL> select seq_id.nextval from dual;
NEXTVAL
----------
1
4、创建行级触发器:
SQL> create or replace trigger tri_tb1_insert
before insert on tb1 --插入前触发
for each row --行级触发器
declare
id int;
begin
--1: --获取一个序列号
dbms_output.put_line('----------');
select seq_id.nextval into id from dual;
:new.id:=id;
--2: --把序列号添加到即将插入的表中
end;
/
5、测试触发器是否可以实现序列号自增长:
SQL> insert into tb1(name) values('zhangsan');
1 row created.
SQL> select * from tb1;
ID NAME
---------- ----------------------------------------
3 zhangsan
SQL> insert into tb1(name) values('lisi');
1 row created.
SQL> select * from tb1;
ID NAME
---------- ----------------------------------------
3 zhangsan
5 lisi
看到tb1表中的id列数据是自动输入的。
mail:helloblock@126.com
QQ:1654294099