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

अद्यतन विवरण के बाद MySQL ट्रिगर में पुराना मान प्राप्त करें

एक UPDATE TRIGGER में , आप OLD . का उपयोग कर सकते हैं पंक्ति डेटा तक पहुँचने के लिए कीवर्ड जिसे अद्यतन द्वारा प्रतिस्थापित किया जा रहा है। NEW कीवर्ड आने वाली पंक्ति डेटा तक पहुँचने की अनुमति देता है जो सफल होने पर पुरानी पंक्ति को बदल देगा।

UPDATE का एक उदाहरण ट्रिगर है:

CREATE TRIGGER upd_check AFTER UPDATE ON SomeTable
    FOR EACH ROW
    BEGIN
       IF (OLD.LastChangedBy <> NEW.LastChangedBy) THEN
         INSERT INTO AuditSomeTable(ID, LastChangedBy) 
         VALUES (OLD.ID, OLD.LastChangedBy);
       END IF;
    END;

SQLFiddle यहाँ

बनाए गए ट्रिगर के प्रकार के आधार पर, OLD और NEW पंक्तियाँ आपके लिए उपलब्ध नहीं हो सकती हैं:

ट्रिगर डालें

  • NEW तक पहुंच केवल छद्म पंक्तियाँ।

ट्रिगर अपडेट करें

  • NEW तक पहुंच और OLD छद्म पंक्तियाँ

ट्रिगर हटाएं

  • केवल OLD तक पहुंच छद्म पंक्तियाँ

यानी कोई OLD नहीं है INSERT . पर पंक्ति ट्रिगर, और कोई NEW DELETE पर पंक्ति ट्रिगर।

ओपी का प्रश्न

ओपी ने वास्तविक कोड और टिप्पणियों में संदर्भित त्रुटि संदेश प्रदान नहीं किया है:

इंगित करता है कि ओपी ने अनजाने में एक INSERT TRIGGER बनाया था और UPDATE TRIGGER नहीं है जैसा कि प्रश्न में इंगित किया गया था। एक INSERT ट्रिगर का कोई OLD नहीं है छद्म तालिका।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL क्वेरी में ऐरे?

  2. एसक्यूएल:2 अलग auto_increment के साथ एक संबंध तालिका बनाना

  3. MySQL और PHP में खाली डेटाबेस?

  4. सॉकेट '/tmp/mysql.sock' के माध्यम से स्थानीय MySQL सर्वर से कनेक्ट नहीं हो सकता (2)

  5. MySQL - सशर्त विदेशी कुंजी बाधाएं