Oracle给表设置自增字段

第一步建表

CREATE TABLE USERLOG(
  "ID" NUMBER(8,0) NOT NULL ENABLE
)

第二步为表字段创建序列

--格式
CREATE SEQUENCE  表名_自增的字段名_SEQ
   NOMINVALUE --不设最小值
   NOMAXVALUE --不设最大值
   START WITH 1 --从1开始
   INCREMENT BY 1 --每次加1
   NOCACHE  --不建立缓冲区
   NOCYCLE;  --不循环

 

--示例
CREATE SEQUENCE  USERLOG_ID_SEQ
   NOMINVALUE
   NOMAXVALUE
   START WITH 1
   INCREMENT BY 1
   NOCACHE
   NOCYCLE;

第三步为序列设置触发器

--格式:
CREATE OR REPLACE TRIGGER 表名_自增的字段名_TRI
BEFORE INSERT ON 表名
FOR EACH ROW 
WHEN (NEW.自增的字段名 IS NULL) --主键不存在才调用触发器
BEGIN
  SELECT 第二步创建的序列名称.NEXTVAL INTO:NEW.自增的字段名 FROM DUAL;
END;

 

--示例
CREATE OR REPLACE TRIGGER USERLOG_ID_TRI  --触发器名称,格式:表名_自增的字段名_TRI
BEFORE INSERT ON USERLOG
FOR EACH ROW 
WHEN (NEW.ID IS NULL)
BEGIN
  SELECT USERLOG_ID_SEQ.NEXTVAL INTO:NEW.ID FROM DUAL;
END;

  

posted @ 2021-09-11 17:12  马云字化腾  阅读(313)  评论(0编辑  收藏  举报