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

mysql ट्रिगर सिंटैक्स त्रुटि बनाएं

जब आप SIGNAL . के माध्यम से त्रुटियाँ उठाने का प्रयास करते हैं आपको SQLSTATE निर्दिष्ट करने की आवश्यकता है जो त्रुटि कोड है और उपयोगकर्ता परिभाषित सामान्य त्रुटि कोड के लिए इसका 45000 संदेश टेक्स्ट के साथ MESSAGE_TEXT

तो ट्रिगर

. के रूप में बन जाता है
delimiter //
create trigger lock_x_id before update on games
for each row
begin
 if old.xid is not null then
   signal SQLSTATE VALUE '45000' SET MESSAGE_TEXT = 'Your custom error message';
 end if;
end;//
delimiter ;

टेस्ट केस

mysql> select * from games;
+----+------+------+
| id | xid  | val  |
+----+------+------+
|  1 | NULL |    1 |
|  2 | NULL |    2 |
|  3 | NULL |    3 |
|  4 |    1 |    4 |
|  5 |    2 |    5 |
+----+------+------+

आइए अब ट्रिगर बनाएं

mysql> delimiter //
mysql> create trigger lock_x_id before update on games
    -> for each row
    -> begin
    ->  if old.xid is not null then
    ->    signal SQLSTATE VALUE '45000' SET MESSAGE_TEXT = 'Your custom error message';
    ->  end if;
    -> end;//
Query OK, 0 rows affected (0.05 sec)


mysql> update games set xid = 4 where id = 1;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> update games set xid = 5 where id=5;
ERROR 1644 (45000): Your custom error message

और ऊपर दिए गए 2 अपडेट कमांड को चलाने के बाद यहां टेबल कैसी दिखती है

mysql> select * from games;
+----+------+------+
| id | xid  | val  |
+----+------+------+
|  1 |    4 |    1 |
|  2 | NULL |    2 |
|  3 | NULL |    3 |
|  4 |    1 |    4 |
|  5 |    2 |    5 |
+----+------+------+

ध्यान दें कि दूसरा अपडेट विफल रहा और पंक्ति अपरिवर्तित है।

इसके बारे में और पढ़ें https://dev.mysql.com/doc /refman/5.5/hi/signal.html




  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. SQL तालिका में सम्मिलित करें नई पंक्तियाँ एक ही तालिका में प्रत्येक फ़ील्ड के लिए:

  3. php क्लाउड 9 में mysql डीबी से कनेक्ट करें?

  4. Mysql में समूह को हटाए बिना सभी रिकॉर्ड कैसे प्राप्त करें?

  5. mysql में 3 टेबल के साथ इनर जॉइन करें