创建Oracle触发器用于表中序列值自增长(Helloblock写作)

创建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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值