Oracle实现主键自增有4种方式
在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数据库版本和具体需求选择合适的方法实现主键自增。
评论已关闭