`
m635674608
  • 浏览: 5031362 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

博客分类: DB-oracle sqlOracle 1、方式一:使用序列和触发器 Sql代码 收藏代码 SQL> CREATE SEQUENCE te

 
阅读更多

 

1、方式一:使用序列和触发器 

Sql代码  收藏代码
  1. SQL> CREATE SEQUENCE test_sequence2  
  2.   2    increment by 1    -- 每次递增1  
  3.   3    start with 1       -- 从1开始  
  4.   4    nomaxvalue      -- 没有最大值  
  5.   5    minvalue 1       -- 最小值=1  
  6.   6    NOCYCLE;      -- 不循环  
  7.   
  8. Sequence created.  
  9.   
  10. SQL> CREATE TABLE test_create_tab2 (  
  11.   2    id   INT,  
  12.   3    val  VARCHAR(10),  
  13.   4    PRIMARY KEY (id)  
  14.   5  );  
  15.   
  16. Table created.  
  17.   
  18. SQL> CREATE OR REPLACE TRIGGER BeforeTestCreate2Insert  
  19.   2    BEFORE INSERT ON test_create_tab2  
  20.   3  FOR EACH ROW  
  21.   4  BEGIN  
  22.   5    SELECT test_sequence2.nextval INTO :new.id  FROM dual;  
  23.   6  END;  
  24.   7  /  
  25.   
  26. Trigger created.  
  27.   
  28. SQL> INSERT INTO test_create_tab2(val) VALUES ('NO id');  
  29.   
  30. 1 row created.  
  31.   
  32. SQL> INSERT INTO test_create_tab2(id, val) VALUES (1, 'id no use');  
  33.   
  34. 1 row created.  
  35.   
  36. SQL> SELECT * FROM test_create_tab2;  
  37.   
  38.         ID VAL  
  39. ---------- --------------------  
  40.          1 NO id  
  41.          2 id no use  

2、方式二:仅使用序列 
Sql代码  收藏代码
  1. [TEST1@orcl#27-12月-10] SQL>create table y_one(id number);  
  2.   
  3. 表已创建。  
  4.   
  5. [TEST1@orcl#27-12月-10] SQL>create sequence y_seq start with 1 increment by 1 nomaxvalue nocycle  
  6.   2  ;  
  7.   
  8. 序列已创建。  
  9.   
  10. [TEST1@orcl#27-12月-10] SQL>insert into y_one values(y_seq.nextval);  
  11.   
  12. 已创建 1 行。  
  13.   
  14. [TEST1@orcl#27-12月-10] SQL>insert into y_one values(y_seq.nextval);  
  15.   
  16. 已创建 1 行。  
  17.   
  18. [TEST1@orcl#27-12月-10] SQL>insert into y_one values(y_seq.nextval);  
  19.   
  20. 已创建 1 行。  
  21.   
  22. [TEST1@orcl#27-12月-10] SQL>commit;  
  23.   
  24. 提交完成。  
  25.   
  26. [TEST1@orcl#27-12月-10] SQL>select * from y_one;  
  27.   
  28.         ID  
  29. ----------  
  30.          1  
  31.          2  
  32.          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’);

 

分享到:
评论

相关推荐

    详解Oracle序列和触发器的使用

    在Oracle中,序列(Sequences)和触发器(Triggers)是两个非常重要的概念,它们在数据库设计和开发中扮演着关键角色。本文将深入探讨这两者,并展示如何在实践中使用它们。 **一、Oracle序列** 序列是一种特殊...

    oracle通过触发器,实现序列自增

    - 使用触发器和序列时需要注意性能问题。特别是在高并发环境下,频繁地使用序列可能会成为瓶颈。 - 如果应用中存在大量的并发写入操作,可以考虑使用其他机制来减少序列访问的频率,比如预生成一批ID存储在内存中...

    Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍

    一旦定义了 SEQUENCE,可以使用 CURRVAL 和 NEXTVAL 来获取当前值和下一个值。CURRVAL 返回当前 SEQUENCE 的值,NEXTVAL 增加 SEQUENCE 的值,然后返回增加后的值。 例如,使用 S_S_DEPART SEQUENCE.insert 一个新...

    SQL语句_设置序列和触发器

    ### SQL语句设置序列和触发器 在数据库管理中,序列和触发器是两种非常重要的机制,它们可以提高数据处理的效率和准确性。通过合理的设置,可以自动化许多重复性任务,减少开发工作量并增强系统的稳定性。下面我们...

    Oracle自增序列和触发器生成工具.zip

    本压缩包"Oracle自增序列和触发器生成工具"提供了一种便捷的方式,帮助开发者快速生成这些必要的数据库对象,从而提高开发效率。 首先,让我们了解什么是Oracle自增序列。在Oracle中,序列(SEQUENCE)是一种特殊的...

    oracle快速批量生成表和触发器和序列.zip

    在Oracle数据库管理中,批量生成表、触发器和序列是一项常见的任务,特别是在系统初始化或数据迁移时。这个压缩包文件“oracle快速批量生成表和触发器和序列.zip”显然是为了帮助用户快速完成这类操作。下面将详细...

    oracle创建表,索引,表空间,触发器,schema用户,序列的Sql文

    以上是Oracle数据库中创建表、索引、表空间、触发器、用户和序列的基本操作。在实际应用中,根据业务需求可能还需要考虑其他因素,如分区、约束、存储过程、视图等。掌握这些基本操作对于理解和管理Oracle数据库至关...

    oracle序列和触发器的建立

    ### Oracle序列和触发器的建立 #### 序列(Sequence) 在Oracle数据库中,序列是一种自动产生数值的对象,常用于为主键字段提供唯一值。序列主要用于实现表中的自增ID功能,例如,当用户需要为某张表的主键设置自...

    Oracle Sql语句转换成Mysql Sql语句

    在数据库管理领域,Oracle SQL和MySQL SQL是两种广泛使用的SQL方言,它们在语法和功能上存在一定的差异。当需要将一个基于Oracle SQL的应用程序迁移到MySQL环境时,就需要进行SQL语句的转换工作。本项目提供了一个...

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

    在Oracle数据库中,为了实现表中某个字段的自动递增功能,通常会使用序列(sequence)结合触发器(trigger)的方式来完成。这种方式不仅能够确保数据的一致性和完整性,还能提高数据处理效率。本文将详细解释如何...

    如何实现Oracle自增,序列,触发器都有

    这种结合使用序列和触发器的方法是Oracle中一种常见的主键自增实现方式。它不仅确保了主键的唯一性和连续性,还大大提高了数据插入效率。在实际应用中,根据具体需求调整序列的参数以及触发器的逻辑是非常重要的。...

    oracle与SQL server的语法差异总结

    - Oracle使用序列对象(如 `CREATE SEQUENCE seq_name`) 来生成自动递增的数字,而在表中没有对应的自动增长列。 - SQL Server则在表中有一个自动增长列(如 `IDENTITY`),无需单独创建序列对象。 9. **SELECT...

    oracle中sequence介绍及应用

    在Oracle数据库中,Sequence是一种用于自动产生数值序列的对象。它可以生成连续的整数或者非连续的整数序列,并且可以根据需求进行递增或递减。Sequence常用于为表中的某列自动生成唯一的主键值或者作为流水号使用。...

    ORACLE和SQL语法区别归纳

    - 例如,在SQL中,创建表通常用`CREATE TABLE`语句,而在Oracle中,可以使用`CREATE TABLE AS SELECT`来直接从查询结果创建新表。 - Oracle支持`ALTER TABLE ADD PARTITION`进行分区表的管理,这是SQL标准中没有的...

    非常详细的sql大全

    - **功能**: `CREATE SEQUENCE`命令用于创建一个可以生成连续数字序列的对象。 - **语法**: ```sql CREATE SEQUENCE sequence_name [INCREMENT BY increment] [MINVALUE minvalue] [MAXVALUE maxvalue] [START ...

    oracle 触发器方式实现行ID自增加

    总结起来,Oracle数据库通过触发器和序列对象相结合,能有效实现行ID的自增加功能。这种技术在需要自动维护唯一标识符的场景下非常实用,例如主键列。但需要注意的是,过度使用触发器可能会影响数据库性能,因此在...

    Oracle 系统表大全

    根据提供的信息,我们可以深入探讨Oracle系统表及其使用方法。这些系统表是Oracle数据库的重要组成部分,它们存储了关于数据库对象的元数据,例如用户、表空间、表、索引等的信息。接下来,我们将逐一分析这些系统表...

    ORACLE SEQUENCE的简单介绍

    ### ORACLE SEQUENCE 的详细介绍与应用 #### 一、概述 在数据库开发和管理中,自动编号是一...以上是关于 Oracle Sequence 的详细介绍及应用场景,希望能帮助开发者更好地理解和使用 Oracle 数据库中的这一强大工具。

    Sqlserver、Oracle、MySql、PostgreSql、SqlLite数据库差异

    - 实现方式略有不同,例如在 Sqlserver 中可以使用 `IDENTITY` 关键字,在 Oracle 中则使用序列(`SEQUENCE`)。 - **表名规范**: - 各数据库在命名规则上略有不同,但普遍推荐使用有意义的英文单词或短语,并遵循...

    Oracle数据库基础教程:入门其实很简单

    - 创建序列:CREATE SEQUENCE语句的使用方法。 - 使用序列:NEXTVAL、CURRVAL等序列操作的使用。 6. **用户、角色与权限控制**: - 用户管理:如何创建、修改、删除用户。 - 角色管理:如何创建、分配角色。 -...

Global site tag (gtag.js) - Google Analytics