PHP&Oracle学习笔记之:auto_increment

发布于: 2008年04月08日

MySQL建表时必须有一个主键(PRIMARY KEY), 每条主键内容必须唯一(Unique), 所以经常使用一个”ID”字段作为主键,给它一个”auto_increment”属性,让”ID”字段每条记录都自增”1″.

Oracle没有这个”auto_increment”属性,但是它有一个叫”SEQUENCE”的东西,也许更好用。”SEQUENCE”也许可以认为是触发器的一种特别用途,可以用下面命令建立。


CREATE SEQUENCE TEST_SEQUENCE //TEST_SEQUENCE 为该SEQUENCE的名字
INCREMENT BY 1 //每次自增1, 也可写非0的任何整数,表示自增,或自减
START WITH 1 // 以该值开始自增或自减
MAXVALUE 1.0E20 //最大值, 如果是在PL/SQL DEVELOPER上无法写科学计数发格式,那就多敲几个9吧
MINVALUE 1 //最小值,写负值,如果是自减的话
NOCYCLE //表示到最大值后不再循环,反之用CYCLE
CACHE 20 //表示调用该SEQUENCE的这个进程拥有最近的20个值,如调用时该值是100,那么100-119都是这个进程的,另外一个进程调用这个SEQUENCE,从120开始计算
NOORDER

上面的命令也可以在PL/SQL Developer上很容易的在“侧边栏”->”SEQUENCE”->右键”NEW…”填入上面讲的内容完成。
建好后如何调动呢,比如我建了一个表,(ORACLE建表,PRIMARY KEY非必要)
create table TEST
(
ID NUMBER(11),
NAME VARCHAR2(10)
)

然后执行
INSERT INTO TEST(ID,NAME) VALUES(TEST_SEQUENCE.NEXTVAL,'Simon')
即可在表里面增加一条记录,ID字段为‘1’,NAME字段为’Simon’, 因为上面的“TEST_SEQUENCE.NEXTVAL”表示上面”SEQUENCE” “TEST_SEQUENCE”的下一个值。开始当然是“1”。再执行一次,就变成“2”了。一次类推。

“SEQUENCE”的好处是建立一个,可以在所有表的插入时调用。让所有表的ID字段彼此唯一。

本文为寻找人生的起点(http://blog.cn-ic.org)原创,如需转载,请注明出处,并保留原文链接 http://blog.cn-ic.org/?p=77。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

浙ICP备18056264号-1