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

MySQL ट्रिगर - एक चयन को एक चर में संग्रहीत करना

आप DECLARE . के साथ MySQL ट्रिगर में स्थानीय चर घोषित कर सकते हैं वाक्य रचना।

यहां एक उदाहरण दिया गया है:

DROP TABLE IF EXISTS foo;
CREATE TABLE FOO (
  i SERIAL PRIMARY KEY
);

DELIMITER //
DROP TRIGGER IF EXISTS bar //

CREATE TRIGGER bar AFTER INSERT ON foo
FOR EACH ROW BEGIN
  DECLARE x INT;
  SET x = NEW.i;
  SET @a = x; -- set user variable outside trigger
END//

DELIMITER ;

SET @a = 0;

SELECT @a; -- returns 0

INSERT INTO foo () VALUES ();

SELECT @a; -- returns 1, the value it got during the trigger

जब आप किसी वेरिएबल के लिए कोई मान निर्दिष्ट करते हैं, तो आपको यह सुनिश्चित करना चाहिए कि क्वेरी केवल एक मान लौटाती है, न कि पंक्तियों का एक सेट या स्तंभों का एक सेट। उदाहरण के लिए, यदि आपकी क्वेरी व्यवहार में एक मान लौटाती है, तो ठीक है, लेकिन जैसे ही यह एक से अधिक पंक्तियों को लौटाता है, आपको "ERROR 1242: Subquery returns more than 1 row मिलता है। ".

आप LIMIT का उपयोग कर सकते हैं या MAX() यह सुनिश्चित करने के लिए कि स्थानीय चर एक ही मान पर सेट है।

CREATE TRIGGER bar AFTER INSERT ON foo
FOR EACH ROW BEGIN
  DECLARE x INT;
  SET x = (SELECT age FROM users WHERE name = 'Bill'); 
  -- ERROR 1242 if more than one row with 'Bill'
END//

CREATE TRIGGER bar AFTER INSERT ON foo
FOR EACH ROW BEGIN
  DECLARE x INT;
  SET x = (SELECT MAX(age) FROM users WHERE name = 'Bill');
  -- OK even when more than one row with 'Bill'
END//


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL का उपयोग करके विदेशी कुंजी के साथ तालिका में मान कैसे सम्मिलित करें?

  2. Mysql डेटाबेस में विदेशी कुंजी मान को कैसे अपडेट करें

  3. MySql कार्यक्षेत्र क्वेरी इतिहास (अंतिम निष्पादित क्वेरी / प्रश्न) यानी तालिका बनाएं / बदलें, चुनें, अद्यतन क्वेरी डालें

  4. दो अलग-अलग कॉलमों के आधार पर ऑर्डर कैसे करें

  5. कमांड लाइन के माध्यम से लिनक्स पर एक MySQL डेटाबेस का चयन करें