最新消息:宝宝仲的世界......这里是宝宝仲的舞台,宝宝仲的个人Show

Oracle自增字段设置

WEB TECH luinstein 444浏览 0评论

Oracle确实强大,强大到设置一个自增字段都会这么麻烦 – -,从在CentOS下安装到使用真可谓困难重重,让我这只菜鸟吃了不少苦头,做个手记先,在Oracle中设置自增字段需要两个工具,一个叫Sequence(序列),另一个就是常用的Trigger(触发器)。
USERS表结构:

CREATE TABLE “USERS”
(
“USERID” NUMBER(11,0) NOT NULL ENABLE,
“USERNAME” VARCHAR2(45 BYTE) NOT NULL ENABLE,
“USERPWD” VARCHAR2(45 BYTE) NOT NULL ENABLE,
“USEREMAIL” VARCHAR2(45 BYTE) DEFAULT NULL,
CONSTRAINT “USERS_PK” PRIMARY KEY (”USERID”)
)

1. 创建一个Sequence用来设置自增规则:

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的时候触发:

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. 可以插入数据测试一下了。

INSERT INTO USERS(username, userpwd, useremail) VALUES(’Bindiry’, ‘474900f17965f09aee38cd884ec2f4a8′, ‘bindiry@xxx.com’);

oracle-logo

转载请注明:宝宝仲的世界 » Oracle自增字段设置

您必须 登录 才能发表评论!