आप "डालने से पहले" ट्रिगर कर रहे हैं। ऐसे ट्रिगर में, आप एक ही तालिका में सम्मिलित नहीं करते - अन्यथा, आप एक अनंत लूप प्राप्त कर सकते हैं। बस वेरिएबल मान को असाइन करें:
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
. से सही मान सम्मिलित करेगा चर।
मैं केवल यह कहना चाहता हूं कि अनुक्रम एक कारण से मौजूद हैं, और आपको इस उद्देश्य के लिए उनका उपयोग करना चाहिए। उनकी कार्यक्षमता की नकल करने की कोशिश करने से त्रुटियां होने की संभावना है।