Oracle实现主键自增有4种方式
    		       		warning:
    		            这篇文章距离上次修改已过423天,其中的内容可能已经有所变动。
    		        
        		                
                在Oracle中实现主键自增通常有以下四种方式:
- 序列(Sequence) + 触发器(Trigger)
- 序列(Sequence) + 主键约束
- 使用identity字段(Oracle 12c及以上版本)
- 使用自定义的主键生成策略(如UUID)
以下是每种方法的示例代码:
- 序列(Sequence) + 触发器(Trigger)
-- 创建序列
CREATE SEQUENCE seq_test_id START WITH 1 INCREMENT BY 1;
 
-- 创建表
CREATE TABLE test (
  id NUMBER PRIMARY KEY,
  data VARCHAR2(100)
);
 
-- 创建触发器,在插入时自动填充主键
CREATE OR REPLACE TRIGGER trg_test_id
BEFORE INSERT ON test
FOR EACH ROW
WHEN (new.id IS NULL) -- 只在id为null时自增
BEGIN
  SELECT seq_test_id.NEXTVAL
  INTO   :new.id
  FROM   dual;
END;
/- 序列(Sequence) + 主键约束
-- 创建序列
CREATE SEQUENCE seq_test_id START WITH 1 INCREMENT BY 1;
 
-- 创建表,主键约束使用序列
CREATE TABLE test (
  id NUMBER DEFAULT seq_test_id.NEXTVAL PRIMARY KEY,
  data VARCHAR2(100)
);- 使用identity字段(Oracle 12c及以上版本)
-- 创建表,使用identity关键字定义自增主键
CREATE TABLE test (
  id NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY PRIMARY KEY,
  data VARCHAR2(100)
);- 使用自定义的主键生成策略(如UUID)
-- 创建表,主键为UUID
CREATE TABLE test (
  id RAW(16) DEFAULT sys_guid() PRIMARY KEY,
  data VARCHAR2(100)
);请根据您的Oracle数据库版本和具体需求选择合适的方法实现主键自增。
评论已关闭