加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

博客分类: DB-oracle sqlOracle 1、方式一:使用序列和触发器 S

发布时间:2020-12-12 14:40:37 所属栏目:百科 来源:网络整理
导读:sql Oracle 1、方式一:使用序列和触发器 Sql代码 SQL CREATE SEQUENCE test_sequence2 2increment by 1 --每次递增1 3start with 1 --从1开始 4nomaxvalue --没有最大值 5minvalue1 --最小值=1 6NOCYCLE; --不循环 Sequence created. SQL CREATE TABLE test
sql Oracle 1、方式一:使用序列和触发器

Sql代码
  1. SQL>CREATESEQUENCEtest_sequence2
  2. 2incrementby1--每次递增1
  3. 3startwith1--从1开始
  4. 4nomaxvalue--没有最大值
  5. 5minvalue1--最小值=1
  6. 6NOCYCLE;--不循环
  7. Sequencecreated.
  8. SQL>CREATETABLEtest_create_tab2(
  9. 2idINT,
  10. 3valVARCHAR(10),
  11. 4PRIMARYKEY(id)
  12. 5);
  13. Tablecreated.
  14. SQL>CREATEORREPLACETRIGGERBeforeTestCreate2Insert
  15. 2BEFOREINSERTONtest_create_tab2
  16. 3FOREACHROW
  17. 4BEGIN
  18. 5SELECTtest_sequence2.nextvalINTO:new.idFROMdual;
  19. 6END;
  20. 7/
  21. Triggercreated.
  22. SQL>INSERTINTOtest_create_tab2(val)VALUES('NOid');
  23. 1rowcreated.
  24. SQL>INSERTINTOtest_create_tab2(id,val)VALUES(1,'idnouse');
  25. 1rowcreated.
  26. SQL>SELECT*FROMtest_create_tab2;
  27. IDVAL
  28. ------------------------------
  29. 1NOid
  30. 2idnouse

2、方式二:仅使用序列
Sql代码
  1. [TEST1@orcl#27-12月-10]SQL>createtabley_one(idnumber);
  2. 表已创建。
  3. [TEST1@orcl#27-12月-10]SQL>createsequencey_seqstartwith1incrementby1nomaxvaluenocycle
  4. 2;
  5. 序列已创建。
  6. [TEST1@orcl#27-12月-10]SQL>insertintoy_onevalues(y_seq.nextval);
  7. 已创建1行。
  8. [TEST1@orcl#27-12月-10]SQL>insertintoy_onevalues(y_seq.nextval);
  9. 已创建1行。
  10. [TEST1@orcl#27-12月-10]SQL>insertintoy_onevalues(y_seq.nextval);
  11. 已创建1行。
  12. [TEST1@orcl#27-12月-10]SQL>commit;
  13. 提交完成。
  14. [TEST1@orcl#27-12月-10]SQL>select*fromy_one;
  15. ID
  16. ----------
  17. 1
  18. 2
  19. 3

1、创建表

create table note(  
id number(20) NOT NULL primary key,/*主键,自动增加*/                 name varchar2(20)); 

2、创建自动增长序列

 Create Sequence addAuto_Sequence 
 Increment by 1     -- 每次加几个 
 start with 1       -- 从1开始计数     
 nomaxvalue         -- 不设置最大值,设置最大值:maxvalue 9999  
 nocycle            -- 一直累加,不循环    
 cache 10;  

3、创建触发器

 Create trigger addAuto before 
 insert on note(表名) for each row /*对每一行都检测是否触发*/
 begin
 select addAuto_Sequence.nextval into:New.id from dual;
 end;      
4、提交 commit;

5、测试 insert into note(name) values(‘lisi’);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读