我正在使用Oracle SQL。有一个用于id的序列和触发器,每次在表中添加新记录时,它都会从1开始递增。但是,如果删除所有记录并将新记录添加到该表中,则id不会从1开始,而它从序列中记录的最后一个最大记录数开始。
因此在TRIGGER语句中有一种方法,如果表为空并且导入了新记录,我可以重置序列。
或者我是否必须使用stored_procedure方式,如果那样我怎样才能使用myBatis mapper调用它?
表(customer_info)
customer_id customer_name customer_location
1 Arbin USA
2 Tim Canada
3 Rachel Australia
序列
CREATE sequence customer_id_seq START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
触发
CREATE OR REPLACE TRIGGER customer_id
BEFORE INSERT ON customer_info
FOR EACH ROW
BEGIN
SELECT customer_id_seq.NEXTVAL
INTO :new.customer_id
FROM dual;
END;
/
谢谢。
答案 0 :(得分:2)
一旦截断表格。序列必须重置为1。
通过再次删除并重新创建它来实现它的最简单方法。
DROP SEQUENCE customer_id_seq
CREATE sequence customer_id_seq START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;