Oracle给表设置自增字段

第一步建表

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

第二步为表字段创建序列

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

 

1
2
3
4
5
6
7
8
--示例
CREATE SEQUENCE  USERLOG_ID_SEQ
   NOMINVALUE
   NOMAXVALUE
   START WITH 1
   INCREMENT BY 1
   NOCACHE
   NOCYCLE;

第三步为序列设置触发器

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

 

1
2
3
4
5
6
7
8
--示例
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 @   马云字化腾  阅读(355)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示