トリガーを作成しようとしていますが、最初の試行のように設計できないことがわかりました。これを以下に示します。これにより、テーブルが変更されているときにテーブルから選択するため、「変更テーブル」エラーが発生します。一度に 1 つのレコードのみを挿入する場合、実際にはこのエラーは発生しませんでしたが、一度に複数のレコードを挿入すると発生します。
トリガーの目的は、顧客が挿入されようとしている顧客と等しいテーブル内のレコードの数をカウントし、新しい order_num 値を count+1 として設定することです。また、シーケンスから引き出されるトリガーによって設定された公開鍵の値もあります。この部分は、トリガーの order_num 部分と関連する SELECT を削除すると正常に機能します。ここでやろうとしていることをどのように達成できますか? 前もって感謝します。
CREATE OR REPLACE TRIGGER t_trg
BEFORE INSERT ON t
FOR EACH ROW
DECLARE
rec_count NUMBER(2,0);
BEGIN
SELECT COUNT(*) INTO rec_count
FROM t
WHERE customer_id = :NEW.customer_id;
:NEW.order_num:= rec_count+1;
:NEW.order_pk_id:= table_seq.NEXTVAL;
END;