1. 创建序列号(SEQUENCE)
CREATE SEQUENCE tab_id_s
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXvalue -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10 --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE
2. 创建表, ID为要设置自动增长的列
CREATE TABLE tab(ID NUMBER,val VARCHAR2(20))
3. 创建触发器,在插入数据时自动设置ID
CREATE OR REPLACE TRIGGER tab_id_tri
BEFORE INSERT on tab -- tab 是表名
FOR EACH row
declare
next_id number
begin
IF :new.id IS NULL OR :new.Id=0 THEN --Id是列名
select tab_id_s.nextval --tab_id_s是刚才创建的
into next_id
from sys.dual
:new.id:=next_id
END IF
end tab_id_tri
4. 以下为测试和查询用SQL
INSERT INTO tab(val) VALUES ('haha')
INSERT INTO tab(val) VALUES ('haha2')
SELECT * FROM tab
比如你现在有个表叫studentalter
table
student
add
constraint
pk_student
primary('stuid')
//其中pk_student是可以自己定义的,就是约束的名字
//stuid是主键名字
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)