「挿入前」トリガーを実行しています。このようなトリガーでは、同じテーブルに挿入しません。そうしないと、無限ループが発生する可能性があります。変数値に割り当てるだけです:
CREATE OR REPLACE TRIGGER trig_deptno2
BEFORE INSERT ON dept2
FOR EACH ROW
DECLARE v_deptno NUMBER(2) ;
BEGIN
SELECT coalesce(MAX(deptno) + 1, 1) INTO :new.deptno
FROM dept2 ;
END trig_deptno2 ;
トリガーが終了すると、new
から適切な値が挿入されます。 変数。
シーケンスが存在するのには理由があるので、この目的で使用する必要があります。それらの機能を模倣しようとすると、エラーが発生する可能性があります。