使用序列自动增加现有表的PK

时间:2017-10-30 08:47:53

标签: oracle

我现有的表 emp_table(pk_emp,名称,地址,联系人,dob)。该表有超过10000条记录。现在我需要一个序列来在此表中使用 next pk_emp 值插入数据。我应该如何创建此序列,该序列将从 pk_emp 的下一个值开始,并可用于此表中的后续插入。

1 个答案:

答案 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;