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



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

例如,在表'billing_table'中 - 列blng_sk是唯一的键(自动启动(。

因此,在将新记录插入billing_table中时,对于列blng_sk,我们需要给出值(这是从当前最大值中增量1的增量。例如,如果blng_sk最大值为12321。

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

Oracle具有SEQUENCE对象,该对象提供您需要的功能。

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

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

假设您在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

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

创建序列dept_seq以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;
/

最新更新