我现有的表 emp_table(pk_emp,名称,地址,联系人,dob)。该表有超过10000条记录。现在我需要一个序列来在此表中使用 next pk_emp 值插入数据。我应该如何创建此序列,该序列将从 pk_emp 的下一个值开始,并可用于此表中的后续插入。
答案 0 :(得分:0)
在Oracle中,您可以创建从您想要的任何值开始的序列(您所要做的就是放置START WITH
):
https://docs.oracle.com/cd/B12037_01/server.101/b10759/statements_6014.htm
类似的东西:
CREATE SEQUENCE pk_emp_seq
START WITH 10000 -- specify the right value here
INCREMENT BY 1
NOCACHE
NOCYCLE;
修改:如果您需要动态实施,请尝试将上面的代码放入execute immediate
:
https://docs.oracle.com/database/122/LNPLS/EXECUTE-IMMEDIATE-statement.htm#LNPLS01317
declare
start_with emp_table.pk_emp%Type;
begin
select max(pk_emp) + 1
into start_with
from emp_table;
-- the same create sequence as in the sample above, but with dynamic "parameter"
execute immediate
'CREATE SEQUENCE pk_emp_seq
START WITH ' || To_Char(start_with) ||
' INCREMENT BY 1
NOCACHE
NOCYCLE';
end;