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

ट्रिगर उदाहरण डालने या अपडेट करने से पहले Oracle

ईएमपी तालिका में रिकॉर्ड डालने या अपडेट करने के दौरान सत्यापन करने के लिए ट्रिगर उदाहरण डालने या अपडेट करने से पहले ओरेकल निम्नलिखित है।

ट्रिगर उदाहरण डालने या अपडेट करने से पहले Oracle

नीचे दिया गया ट्रिगर ईएमपी टेबल पर निम्नलिखित दो जांच करेगा। (1) यदि रिकॉर्ड सम्मिलित करते हैं, तो यह जांच करेगा कि कमीशन कॉलम 500 से अधिक नहीं है। (2) यदि अपडेट किया जा रहा है, तो यह जांच करेगा कि जॉब कॉलम को शून्य के रूप में सेट नहीं किया जाना चाहिए।

CREATE OR REPLACE TRIGGER TRIG_EMP_BEF_UPD_INS
BEFORE INSERT OR UPDATE
ON EMP
FOR EACH ROW
BEGIN
IF INSERTING
THEN
/* commission should not be greater than 500, for new record*/
IF :new.comm > 500
THEN
raise_application_error (
-20001,
'Commission should not be greater than 500.');
END IF;
ELSIF UPDATING
THEN
/* check for column JOB should not be set as null while update*/
IF :new.job IS NULL
THEN
raise_application_error (-20001, 'Column JOB should have a value.');
END IF;
END IF;
END;

इन्सर्ट स्टेटमेंट के लिए ट्रिगर के ऊपर टेस्ट करें

Insert into EMP
(EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
Values
(7399, 'A.SMITH', 'CLERK', 7902, 
TO_DATE('12/17/1980 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), 800, 550, 20);

आउटपुट

Error at line 1
ORA-20001: Commission should not be greater than 500.
ORA-06512: at "TRIG_EMP_BEF_UPD_INS", line 6
ORA-04088: error during execution of trigger 'TRIG_EMP_BEF_UPD_INS'
Script Terminated on line 1.

अपडेट स्टेटमेंट के लिए ट्रिगर के ऊपर टेस्ट करें

UPDATE EMP
SET sal = 900, job = NULL
WHERE empno = 7499;

आउटपुट

Error at line 2
ORA-20001: Column JOB should have a value.
ORA-06512: at "TRIG_EMP_BEF_UPD_INS", line 12
ORA-04088: error during execution of trigger 'TRIG_EMP_BEF_UPD_INS'
Script Terminated on line 2.

आप निम्न लिंक से डेमो टेबल डाउनलोड करके अपने स्कीमा में इस ट्रिगर का परीक्षण कर सकते हैं स्कॉट स्कीमा स्क्रिप्ट डाउनलोड करें।

यह भी देखें:

  • Oracle प्रक्रिया में वैश्विक अस्थायी तालिकाओं का उपयोग कैसे करें?
  • Oracle ट्रिगर WHEN क्लॉज उदाहरण के साथ
  • Oracle प्रक्रिया उदाहरण में तालिका प्रकार

  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. एक्सेस में ओडीबीसी लिंक्ड टेबल के लिए थोक INSERTs के प्रदर्शन को कैसे बढ़ाया जाए?

  3. Oracle प्रतीक्षा घटनाएँ जो सभी को पता होनी चाहिए

  4. @Query . का उपयोग करके स्प्रिंग बूट में फ़ाइल से क्वेरी प्राप्त करें

  5. Oracle:'=कोई ()' बनाम 'IN ()'