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

क्या मैं MySQL ट्रिगर में लेनदेन जैसी क्षमता का उपयोग कर सकता हूं?

हाँ आप कर सकते हैं, लेकिन आप इसे कैसे करते हैं यह आपके संस्करण पर निर्भर करता है।

सबसे पहले, ट्रिगर स्वयं लेन-देन वाले होते हैं; आपकी स्थिति में, आपके पास एक सम्मिलित ट्रिगर है जो दो और प्रविष्टियां करता है। यदि उनमें से एक विफल हो जाता है, तो आपको अपना वांछित प्रभाव मिलेगा।

निम्नलिखित उदाहरण पर विचार करें:

CREATE TABLE a (colA INT);
CREATE TABLE b (colB INT);
CREATE TABLE c (colC INT);
delimiter :
CREATE TRIGGER testtrig BEFORE INSERT ON a
  FOR EACH ROW BEGIN
    INSERT INTO b(colB) VALUES(NEW.colA);
    INSERT INTO c(banana) VALUES (NEW.colA); -- note the faulty column name
END;:
delimiter ;

अब, जब मैं एक इंसर्ट चलाता हूं जो विफल हो जाता है, तो ऐसा होता है:

mysql> INSERT INTO a VALUES (5);
ERROR 1054 (42S22): Unknown column 'banana' in 'field list'
mysql> SELECT * FROM a;
Empty set (0.00 sec)

यह आपके वांछित परिणाम से मेल खाता है।

आम तौर पर, यदि आपके पास तर्क है तो आप डालने का प्रयास करने से पहले अपने डेटा को सत्यापित करने के लिए उपयोग कर सकते हैं, आप ट्रिगर को विभिन्न तरीकों से विफल कर सकते हैं:

  • MySQL 5.5 में, आप SIGNAL आपके ट्रिगर से त्रुटि उत्पन्न करने के लिए तंत्र, इस प्रकार यह पूरी प्रविष्टि को विफल कर देता है।
  • MySQL 5.5 से पहले, आप ट्रिगर को विफल करने के लिए एक जानबूझकर त्रुटि उत्पन्न कर सकते हैं।

मुझे लगता है कि आप अपने प्रश्न में लिंक से 5.0 का उपयोग कर रहे हैं, इसलिए यदि आपको आवश्यकता है, तो आप एक जानबूझकर त्रुटि कर सकते हैं, उदाहरण के लिए एक ट्रिगर को विफल करने के लिए जानबूझकर एक अमान्य कॉलम में डालें। हालाँकि, आप अपने प्रश्न में जिस स्थिति का वर्णन करते हैं, वह पहले से ही लेन-देन के रूप में संभाली जा चुकी है, जैसा कि मेरे उत्तर की शुरुआत में वर्णित है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP सत्र में कैश डेटा, या हर बार डीबी से क्वेरी?

  2. मैं MySQL के साथ अलग-अलग कॉलम कैसे गिन सकता हूं और समूहबद्ध कर सकता हूं?

  3. यदि कोई रिकॉर्ड नहीं मिला तो MySql गिनती () 0 वापस करने के लिए

  4. MySQL त्रुटि कोड:1193. अज्ञात सिस्टम चर

  5. php बाधा उल्लंघन त्रुटि 1452