如何在select语句中增加ORACLE中唯一约束列值的值。
例如,在表'BILLING_TABLE'中 - 列BLNG_Sk是唯一键(自动增量)。
因此,在将新记录插入BILLING_TABLE时,对于列BLNG_SK,我们需要给出值(从当前最大值开始增加1)。 例如,如果BLNG_SK最大值为12321。
新纪录应为12322。 如何在Oracle中实现这一目标?
答案 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