建立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
本文出自 “Helloblock的DBA足跡” 部落格,請務必保留此出處http://helloblock.blog.51cto.com/7899615/1294386