Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

पुनरावर्ती SQL स्तरों की अधिकतम संख्या (50) पार हो गई

आप "डालने से पहले" ट्रिगर कर रहे हैं। ऐसे ट्रिगर में, आप एक ही तालिका में सम्मिलित नहीं करते - अन्यथा, आप एक अनंत लूप प्राप्त कर सकते हैं। बस वेरिएबल मान को असाइन करें:

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 . से सही मान सम्मिलित करेगा चर।

मैं केवल यह कहना चाहता हूं कि अनुक्रम एक कारण से मौजूद हैं, और आपको इस उद्देश्य के लिए उनका उपयोग करना चाहिए। उनकी कार्यक्षमता की नकल करने की कोशिश करने से त्रुटियां होने की संभावना है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. यह कह रहा है कि मेरे पास कोई पंक्ति नहीं चुनी गई है?

  2. pl/sql संग्रहीत प्रोग्राम टेक्स्ट के बारे में प्रश्न

  3. एक ही तालिका से Oracle SQL MIN और MAX संयोजन

  4. Oracle अनुक्रम निरंतर संख्या उत्पन्न नहीं कर रहा है

  5. पुराने plsql को कैसे वापस करें?