`
mamaoyuan625
  • 浏览: 173444 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Oracle中建立连续的序列sequence

阅读更多

要用到触发器

1:此处触发器结构:

create or replace tirrger tirrger_name
before insert
on table_name
for each row
----------------------------
declare
begin
           null;
end;

 

2:建表

create table c
(
           id number primary key,
           name varchar2(20)
)

 

3:建触发器

 

CREATE OR REPLACE TRIGGER tr_613
BEFORE INSERT
ON  c
FOR EACH ROW
DECLARE 
BEGIN
    
          SELECT seq_1.NEXTVAL INTO :NEW.id FROM dual;

         
          
END;

 

如果要在id前加上日期以便日后好查询

可以把begin end中的select替换为:

 SELECT (to_char(SYSDATE,'yyyymmdd') || (seq_1.NEXTVAL)) INTO :NEW.id FROM dual;

 4:测试

INSERT INTO c(NAME) VALUES('a');
INSERT INTO c(NAME) VALUES(123);
INSERT INTO c(NAME) VALUES('a');
INSERT INTO c(NAME) VALUES(a); --故意出错 在insert 检验是否是连续的
INSERT INTO c(NAME) VALUES('a');
COMMIT;
SELECT *FROM c;

 

结果:

ID            NAME
1                a
2               123
3                 a
4                 a

 

成功!

分享到:
评论

相关推荐

    生成oracle数据库中的所有sequence的语句

    可以根据oracle数据库中存在的sequence,生成建立语句

    Oracle 创建和使用序列

    --创建序列 create sequence seq_user start with 1 increment by 1 nomaxvalue cache 10; --使用序列 insert into user_table(user_id,user_name,user_pwd) vlaues(seq_user.nextval,'tcy','tcy'); --修改...

    Oracle创建自增字段sequence

    Oracle中没有sqlserver中那么方便的自增序列,如果想要达到sqlserver中那种效果,也不是很麻烦,需要创建一个自增序列SEQUENCE,然后建一个触发器即可。  CREATE SEQUENCE emp_sequence  INCREMENT BY 1 — ...

    通过实例了解Oracle序列Sequence使用方法

    序列(Sequence)是用来生成连续的整数数据的对象。序列常常用来作为主键中增长列, 序列中的可以升序生成,也可以降序生成。创建序列的语法是: 语法结构:创建序列 CREATE SEQUENCE sequence_name [START WITH ...

    oracle 主键自增 sequence

    然后从sequence中查就行 胡萝卜须 23:22:02 不用关联 緣,仯芣妸訁 23:23:57 嗯 我再找找看 胡萝卜须 23:24:16 insert的时候用sequence 胡萝卜须 23:25:23 sequence.Nextval 緣,仯芣妸訁 23:26:05 比如我insert ...

    oracle中创建序列及序列补零实例详解

    oracle中创建序列及序列补零实例详解 我们经常会在在DB中创建序列: -- Create sequence create sequence COMMON_SEQ minvalue 1 maxvalue 999999999 start with 1 increment by 1 cache 20 cycle; 我们的序列的...

    java自动生成Oracle sequence管理类

    Oracle自增长主键自动生成类 public static int nextID String table { if table null return 1; table table toLowerCase ; String strKey table; if sequences containsKey strKey { ...

    oracle迁移mysql自增序列问题

    今天从oracle迁移数据到mysql碰到个需求:原先的主键字段需要改成mysql中的自增字段,而且原先数据的值不能变,以后新插入的值从原先数据最大的值开始自增。 解决办法: 构建环境: mysql> CREATE TABLE test -> ( ...

    详解ORACLE SEQUENCE用法

    在oracle中sequence就是序号,每次取的时候它会自动增加。sequence与表没有关系。 1、Create Sequence 首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限。 创建语句如下: CREATE SEQUENCE seqTest INCREMENT...

    MySQL实现类似Oracle序列的方案

    Oracle一般使用序列(Sequence)来处理主键字段,而MySQL则提供了自增长(increment)来实现类似的目的; 但在实际使用过程中发现,MySQL的自增长有诸多的弊端:不能控制步长、开始索引、是否循环等;若需要迁移数据库,...

    Oracle中使用触发器(trigger)和序列(sequence)模拟实现自增列实例

    问题:在SQL Server数据库中,有自增列这个字段属性,使用起来也是很方便的。而在Oracle中却没有这个功能,该如何实现呢? 答:在Oracle中虽然没有自增...2、建立序列SEQUENCE 代码如下: create sequence user_seq in

    Oracle数据库中创建自增主键的实例教程

    在设计数据库表的时候发现Oracle没有自增主键的设置,Google了解到Oracle本身并不支持自增主键,需要通过序列(Sequence)和...创建序列Sequence Create Sequence SEQ_STUDENT minvalue 1 maxvalue 99999999999999

    oracle序列主键自增长

    当向表中插入数据时,主键值自动加一. 实现方法1: 建立一个最小为1,最大为nomaxvalue的一个序列号会自动循环的序列 create sequence 序列名 increment by 1 start with 1 nomaxvalue nocycle; .......

    Oracle在表上建立自增字段的方法

    本方法为使用SEQUENCE(序列)  例如有表temp_test结构为:  create table TEMP_TEST  (  id number,  nm varchar(10),  primary key(id) //id为主键,下面的方法把它设为自增字段  )  1、建立...

    Oracle序列的创建与使用

    创建序列demo_s:  create sequence demo_s  minvalue 1000  maxvalue 999999999999999999  start with 1000  increment by 1  cache 20;  解释:  INCREMENT BY:指定序列增长步长。可以为正...

    oracle数据库主键自增并且返回主键值

    create sequence seq_users ##创建序列seq_users increment by 1 ## 步长,每次加1 start with 1 ##从1开始 minvalue 1 ##最小值 maxvalue 9999999 ##最大值 order ##确保按照请求次序生成整数 【不常用的设置】....

    sqlserver实现oracle的sequence方法

    当然这点小问题是难不倒...网上常见的一个存储过程为 为当前库所有用到Sequence建一张表,譬如“AllSequence”,内含四个字段【名字,起点值,递增值,当前值】,创建Sequence的时候就创建一条记录,获取Sequence的时

    在MySQL中创建实现自增的序列(Sequence)的教程

    由于mysql和oracle不太一样,不支持直接的sequence,所以需要创建一张table来模拟sequence的功能,理由sql语句如下: 第一步:创建–Sequence 管理表 DROP TABLE IF EXISTS sequence; CREATE TABLE sequence ( ...

    oracle设置主键自动增长

     以上代码完成了一个序列(sequence)的建立过程,名称为emp_sequence,范围是从1开始到无限大(无限大的程度是由你机器决定的),nocycle 是决定不循环,假如你设置了最大值那么你可以用cycle 会使seq到最大之后循环....

    Oracle与Mysql自动增长列(id)的区别

    Oracle必须通过创建sequence序列来实现自动增加列的功能。 首先要建立序列(当然必须要先建好表,添加好主键约束,这列假设约束名为test_sequence)  create sequence test_sequence [increment by 1]–增长的步长 ...

Global site tag (gtag.js) - Google Analytics