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用来设置自增规则:
|
Sequence的语句说明:
INCREMENT BY 1 — 每次加几个
START WITH 1 — 从1开始计数
NOMAXVALUE — 不设置最大值
NOCYCLE — 一直累加,不循环
现在就可以使用S_USERS_USERID.CURRVAL(返回Sequence当前值)和S_USERS_USERID.NEXTVAL(返回增加后的值)了。
2. 创建一个Trigger来使用Sequence,并在USERS表Insert的时候触发:
|
注:sys.DUAL是一个由sys用户创建的表,常用在没有目标表的Select语句块中。
3. 可以插入数据测试一下了。
INSERT INTO USERS(username, userpwd, useremail) VALUES(’Bindiry’, ‘474900f17965f09aee38cd884ec2f4a8′, ‘bindiry@xxx.com’);