如何在ORACLE中增加唯一约束列值的值

时间:2018-02-07 12:34:16

标签: oracle identity

如何在select语句中增加ORACLE中唯一约束列值的值。

例如,在表'BILLING_TABLE'中 - 列BLNG_Sk是唯一键(自动增量)。

因此,在将新记录插入BILLING_TABLE时,对于列BLNG_SK,我们需要给出值(从当前最大值开始增加1)。 例如,如果BLNG_SK最大值为12321。

新纪录应为12322。 如何在Oracle中实现这一目标?

3 个答案:

答案 0 :(得分:0)

Oracle有一个SEQUENCE对象,它提供了您需要的功能。

使用CREATE SEQUENCE SQL语句创建一个。

Oracle文档提供了所有必需的信息,文档可通过Oracle网站获得。

答案 1 :(得分:0)

尝试创建序列和触发器。当您手动提供值时就是这种情况。

创建序列dept_seq START WITH 12322;

触发定义:

CREATE OR REPLACE TRIGGER dept_bir 
BEFORE INSERT ON BILLING_TABLE
FOR EACH ROW

BEGIN
  SELECT dept_seq.NEXTVAL
  INTO   :new.id
  FROM   dual;
END;
/

答案 2 :(得分:0)

假设您使用的是Oracle 12.1或更高版本,请将其定义为标识列,并在插入时不传递任何值:

create table testtable
( test_id number generated always as identity
                 constraint testtable_pk primary key
, othercol varchar2(10) );

insert into testtable (othercol) values ('Demo');

select * from testtable;

   TEST_ID OTHERCOL
---------- ----------
         1 Demo

insert into testtable (othercol) values ('Demo #2');

select * from testtable;

   TEST_ID OTHERCOL
---------- ----------
         1 Demo
         2 Demo #2