首页 文章

Oracle DB - 无序列的主键自动增量列

提问于
浏览
0

我想知道是否有办法创建一个带有主键的表列,该主键在不使用序列的情况下自动递增 .

我看到它在微软SQL Server上使用IDENTITY,在MySQL上使用AUTO_INCREMENT,但无法获得适用于Oracle DB的功能 .

这是我目前的做法:

CREATE TABLE test
(   id NUMBER(6) IDENTITY,
    CONSTRAINT pk_id PRIMARY KEY (id)
)

1 回答

  • 1

    Oracle中的标识列将满足您的要求,但它们是在Oracle Database 12c中引入的 .

    由于您使用的是Oracle Database 11g,因此最好的方法是使用序列触发器方法 . 蒂姆霍尔有一个很好的写这个here

    摘抄:

    创建一个包含合适主键列和序列的表以支持它 . CREATE TABLE部门(
    ID NUMBER(10)NOT NULL,
    DESCRIPTION VARCHAR2(50)NOT NULL);

    ALTER TABLE部门ADD(
    CONSTRAINT dept_pk PRIMARY KEY(ID));

    创建序列dept_seq;
    如果未在插入中指定,则创建一个触发器以填充ID列 . 创建或替换TRIGGER dept_bir
    在插入部门之前
    对于每一行
    WHEN(new.id IS NULL)
    开始
    SELECT dept_seq.NEXTVAL
    INTO:new.id
    来自双重;
    结束;

相关问题