我正在使用Oracle SQL。每次在表中添加新記錄時,都會有一個用於id的序列和觸發器,從1開始遞增。但是,如果刪除所有記錄並添加此記錄的新記錄,則記錄不會從1開始,而是從記錄在記錄序列中的最後一個最大記錄數開始。如果表格爲空,如何重置序列?
因此,在TRIGGER語句中,如果表格爲空且導入新記錄,則可以重置序列。
或者我必須做stored_procedure的方式,如果那樣的話我怎麼能用myBatis映射器調用這個呢?
表(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;
/
謝謝。
在這種情況下不使用自動增量字段的情況下會出現什麼問題customer_id_seq?重置迴應該只是TRUNCATE表 –
maSTAShuFu
@maSTAShuFu它不是Oracle的SQL Server,而不是一個標識列。 –
有道理......沒想到 – maSTAShuFu