Oracle教程:使用序列和触发器自动生成自增ID
-- 创建一个序列,用于生成自增的ID值
CREATE SEQUENCE test_seq
START WITH 1
INCREMENT BY 1
NOCACHE
NOCYCLE;
-- 创建一个触发器,在插入新记录时自动使用序列生成ID
CREATE OR REPLACE TRIGGER test_before_insert
BEFORE INSERT ON test
FOR EACH ROW
WHEN (new.id IS NULL) -- 仅当ID字段为NULL时,才自动生成
BEGIN
SELECT test_seq.NEXTVAL
INTO :new.id
FROM dual;
END;
/
-- 创建一个示例表,其中包含一个将自动生成ID的字段
CREATE TABLE test (
id NUMBER(10) NOT NULL,
data VARCHAR2(100)
);
-- 向表中插入一条新记录,不指定ID,让触发器自动生成
INSERT INTO test (data) VALUES ('Sample Data');
-- 查询新插入的记录,验证ID是否已自动生成
SELECT * FROM test;
这段代码首先创建了一个名为test_seq
的序列,用于生成自增的ID值。接着,创建了一个触发器test_before_insert
,该触发器在向test
表插入新记录之前触发,并且当新记录的id
字段为NULL
时,自动从序列test_seq
获取下一个值赋给id
字段。最后,代码创建了一个示例表test
,并向其中插入了一条新记录,不指定id
字段的值,以验证触发器的功能。
评论已关闭