自动递增 Oracle 数据库中的现有列
为 Oracle 中的现有列添加自动递增功能可以通过不同的方法来实现,具体取决于在 Oracle 版本上。
Oracle 12c 及更高版本:使用标识列
Oracle 12c 引入了 IDENTITY 列功能,可简化自动递增:
CREATE TABLE t ( ID NUMBER GENERATED ALWAYS AS IDENTITY START WITH 150111111 INCREMENT BY 1, text VARCHAR2(50) );
Oracle 11g 及之前版本:序列和触发器
对于 12c 之前的 Oracle 版本,您可以使用以下组合序列和触发器:
CREATE SEQUENCE t_seq START WITH 150111111 INCREMENT BY 1;
ALTER TABLE t ADD CONSTRAINT id_pk PRIMARY KEY (ID);
CREATE OR REPLACE TRIGGER t_trg BEFORE INSERT ON t FOR EACH ROW WHEN (new.id IS NULL) BEGIN SELECT t_seq.NEXTVAL INTO :new.id FROM dual; END;
此触发器会自动使用值填充 ID 列从序列中。
示例用法:
对于这两种方法,插入都会用从 150111111 开始的自动递增值填充 ID 列。
INSERT INTO t(text) VALUES('auto-increment test');
查询表确认自动递增ID:
SELECT * FROM t; ID TEXT ------------------------- ---------------------------------------- 150111111 This table has an auto-incrementing column
注意: Oracle 在使用标识列时隐式创建一个名为 ISEQ$$ 的序列。
以上是如何为 Oracle 数据库中的现有列添加自动递增功能?的详细内容。更多信息请关注PHP中文网其他相关文章!