我有一个查询来刷新表中的数据;即完全清除所有数据,并更新数据。 我注意到主列号继续增加。 如何重建此列,以便每次刷新数据时数字从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; /
这只是回答你的问题。但是,恕我直言,我绝不会喜欢在任何生产系统中这样做。