预先存在的 Oracle 列的自动增量
虽然 Oracle 本身不支持向现有列添加自动增量功能,可以采用各种方法来实现这一目标。
11g 和之前的版本:序列和触发器
对于 Oracle 版本 11g 及更早版本,可以使用序列和触发器:
示例:
-- Create sequence CREATE SEQUENCE t_seq START WITH 150111111 INCREMENT BY 1; -- Alter table ALTER TABLE t ADD CONSTRAINT id_pk PRIMARY KEY (ID); -- Create trigger 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;
12c 及更高版本:标识列
Oracle 12c 引入身份列功能,允许在表内自动递增本身:
示例:
CREATE TABLE t ( ID NUMBER GENERATED ALWAYS AS IDENTITY START WITH 150111111 INCREMENT BY 1, text VARCHAR2(50) );
请注意,这些方法不会更新列中的现有值。要修改现有值,需要单独的更新查询。
以上是如何为现有 Oracle 列添加自动增量功能?的详细内容。更多信息请关注PHP中文网其他相关文章!