PL / SQL通过APEX刷新主列

时间:2014-09-11 07:25:54

标签: oracle plsql oracle-apex

我有一个查询来刷新表中的数据;即完全清除所有数据,并更新数据。 我注意到主列号继续增加。 如何重建此列,以便每次刷新数据时数字从1开始。

1 个答案:

答案 0 :(得分:0)

如果您不在12c,假设您的主键是使用触发器通过序列填充的。你能做的是:

  • 使用逻辑创建一个触发器,将序列重置为正常, 即每次清洗表格后,序列将开始 WITH 1和INCREMENT BY 1.使用ALTER SEQUENCE。

  • 使用alter语句的序列逻辑部分(感谢Tom Kyte for 这个):

create or replace
procedure reset_sequence(p_seq in varchar2)
is
    l_value number;
begin
-- Select the next value of the sequence

    execute immediate
    'select ' || p_seq || 
    '.nextval from dual' INTO l_value;

-- Set a negative increment for the sequence, 
-- with value = the current value of the sequence

    execute immediate
    'alter sequence ' || p_seq || 
    ' increment by -' || l_value || ' minvalue 0';

-- Select once from the sequence, to 
-- take its current value back to 0

    execute immediate
    'select ' || p_seq || 
    '.nextval from dual' INTO l_value;

-- Set the increment back to 1

    execute immediate
    'alter sequence ' || p_seq || 
    ' increment by 1 minvalue 0';
end;
/

这只是回答你的问题。但是,恕我直言,我绝不会喜欢在任何生产系统中这样做。