ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 创建Oracle触发器用于表中序列值自增长(Helloblock写作)

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

原创 Linux操作系统 作者:Helloblock 时间:2013-06-19 08:14:53 0 删除 编辑

创建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列数据是自动输入的。

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28408358/viewspace-764226/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-02-16

  • 博文量
    14
  • 访问量
    82705