设为首页收藏本站
开启辅助访问

创星网络[分享知识 传递快乐]

 找回密码
 立即注册

QQ登录

只需一步,快速开始

用新浪微博登录

只需一步,快速搞定

搜索

Oracle自增字段设置

2012-8-8 10:57| 发布者: cryinglily| 查看: 427| 评论: 0|原作者: luinstein

摘要: Oracle确实强大,强大到设置一个自增字段都会这么麻烦 – -,从在CentOS下安装到使用真可谓困难重重,让我这只菜鸟吃了不少苦头,做个手记先,在Oracle中设置自增字段需要两个工具,一个叫Sequence(序列),另一个就 ...
Oracle确实强大,强大到设置一个自增字段都会这么麻烦 – -,从在CentOS下安装到使用真可谓困难重重,让我这只菜鸟吃了不少苦头,做个手记先,在Oracle中设置自增字段需要两个工具,一个叫Sequence(序列),另一个就是常用的Trigger(触发器)。
USERS表结构:
  
  1.   CREATE TABLE “USERS”
  2. (
  3. “USERID” NUMBER(11,0) NOT NULL ENABLE,
  4. “USERNAME” VARCHAR2(45 BYTE) NOT NULL ENABLE,
  5. “USERPWD” VARCHAR2(45 BYTE) NOT NULL ENABLE,
  6. “USEREMAIL” VARCHAR2(45 BYTE) DEFAULT NULL,
  7. CONSTRAINT “USERS_PK” PRIMARY KEY (”USERID”)
  8. )
复制代码

1. 创建一个Sequence用来设置自增规则:
   
  1. CREATE SEQUENCE S_USERS_USERID NOMAXVALUE NOCYCLE  
复制代码

  Sequence的语句说明:
  
  INCREMENT BY 1 — 每次加几个
START WITH 1 — 从1开始计数
NOMAXVALUE — 不设置最大值
NOCYCLE — 一直累加,不循环
  
  现在就可以使用S_USERS_USERID.CURRVAL(返回Sequence当前值)和S_USERS_USERID.NEXTVAL(返回增加后的值)了。
  2. 创建一个Trigger来使用Sequence,并在USERS表Insert的时候触发:
        
  1. CREATE OR REPLACE TRIGGER R_USERS_I  BEFORE INSERT ON USERS  FOR EACH ROW  BEGIN    SELECT S_USERS_USERID.NEXTVAL INTO :new.USERID FROM sys.DUAL;  END;  
复制代码

  注:sys.DUAL是一个由sys用户创建的表,常用在没有目标表的Select语句块中。
  3. 可以插入数据测试一下了。
  
  1.   INSERT INTO USERS(username, userpwd, useremail) VALUES(’Bindiry’, ‘474900f17965f09aee38cd884ec2f4a8′, bindiry@xxx.com’" target="_blank">‘bindiry@xxx.com’);
复制代码

   
  from:http://junnan.org/blog/?p=918
  

鲜花

握手

雷人

路过

鸡蛋

相关分类

QQ|Archiver|手机版|小黑屋|创星网络 ( 苏ICP备11027519号|网站地图  

GMT+8, 2025-2-23 00:49 , Processed in 0.058395 second(s), 18 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

返回顶部