Oracle SQLを使用しています。新しいレコードがテーブルに追加されるたびに1からインクリメントするIDに使用されるシーケンスとトリガがあります。ただし、すべてのレコードが削除され、新しいレコードがこのテーブルに追加される場合、IDはシーケンスから記録された最後の最大レコード数から開始されますが、1から開始されません。テーブルが空の場合にシーケンスをリセットするには?
したがって、テーブルが空で新しいレコードがインポートされた場合、シーケンスをリセットする方法がTRIGGERステートメントにあります。
ORストアドプロシージャを実行する必要がありますか?その場合、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 SQLはSQLではなく、ID列ではありません。 –
意味がある...期待していなかった – maSTAShuFu