Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में ट्रिगर का उपयोग करके INSERT या UPDATE को कैसे रोकें?


SIGNAL SQLSTATE का उपयोग करें

ट्रिगर के अंदर INSERT या UPDATE ऑपरेशन को रोकने के लिए, SIGNAL SQLSTATE '45000' का उपयोग करें जो एक कस्टम त्रुटि उठाता है और ऑपरेशन को रद्द कर देता है।

ट्रिगर सिंटैक्स

DELIMITER //
CREATE TRIGGER yourTriggerName 
BEFORE INSERT ON yourTableName 
FOR EACH ROW 
BEGIN
    IF (yourCondition) THEN
        SIGNAL SQLSTATE '45000' 
        SET MESSAGE_TEXT = 'yourErrorMessage';
    END IF;
END //
DELIMITER ;

व्यावहारिक उदाहरण: Id 1 से 5 के बीच होना चाहिए

टेबल बनाना

mysql> CREATE TABLE Insert_Prevent (
    Id INT
);

BEFORE INSERT ट्रिगर बनाना

mysql> DELIMITER //
mysql> CREATE TRIGGER InsertPreventTrigger 
BEFORE INSERT ON Insert_Prevent 
FOR EACH ROW 
BEGIN
    IF (NEW.Id < 1 OR NEW.Id > 5) THEN
        SIGNAL SQLSTATE '45000' 
        SET MESSAGE_TEXT = 'You cannot insert record';
    END IF;
END //
mysql> DELIMITER ;

परीक्षण: अमान्य मान (रोक दिया जाएगा)

mysql> INSERT INTO Insert_Prevent VALUES(0);
ERROR 1644 (45000): You cannot insert record

mysql> INSERT INTO Insert_Prevent VALUES(6);
ERROR 1644 (45000): You cannot insert record

परीक्षण: वैध मान (सफल)

mysql> INSERT INTO Insert_Prevent VALUES(1);
mysql> INSERT INTO Insert_Prevent VALUES(5);
mysql> INSERT INTO Insert_Prevent VALUES(2);
mysql> INSERT INTO Insert_Prevent VALUES(3);

सम्मिलित डेटा

mysql> SELECT * FROM Insert_Prevent;
+------+
| Id   |
+------+
|    1 |
|    5 |
|    2 |
|    3 |
+------+

मुख्य बिंदु

  • BEFORE INSERT या BEFORE UPDATE ट्रिगर का उपयोग करें।
  • NEW.column_name नए मान को संदर्भित करता है।
  • SIGNAL SQLSTATE '45000' एक अनहैंडल्ड यूजर-डिफाइंड एक्सेप्शन उठाता है।
  • MESSAGE_TEXT अंतिम उपयोगकर्ता को दिखाया जाने वाला कस्टम संदेश है।
  • यह डेटा अखंडता नियमों को डेटाबेस स्तर पर लागू करने का शक्तिशाली तरीका है।
  1. - MySQL में ट्रिगर के साथ INSERT कमांड पर टेबल अपडेट करना

    परिचय MySQL ट्रिगर डेटाबेस ऑब्जेक्ट हैं जो विशिष्ट घटनाओं (INSERT, UPDATE, DELETE) पर स्वचालित रूप से निष्पादित होते हैं। यह लेख दिखाता है कि कैसे एक टेबल में INSERT होने पर दूसरी टेबल को स्वचालित रूप से अपडेट करने के लिए AFTER INSERT ट्रिगर बनाया जाए। उदाहरण: दो टेबल बनाना ); Query OK, 0 rows aff

  1. - MySQL में INSERT से पहले ट्रिगर कैसे बनाएं?

    MySQL में BEFORE INSERT ट्रिगर किसी नई पंक्ति के इन्सर्ट होने से पहले स्वचालित रूप से निष्पादित होता है। इसका उपयोग डेटा वैलिडेशन, डिफ़ॉल्ट मान सेट करने, बिजनेस नियम लागू करने, या इन्सर्ट रोकने के लिए किया जाता है। सिंटैक्स DELIMITER // CREATE TRIGGER trigger_name BEFORE INSERT ON table_name FOR EA

  1. - MySQL स्टोर्ड प्रोसीजर में डिलीमीटर का सही उपयोग और मान डालना

    समस्या स्टोर्ड प्रोसीजर बनाते समय डिफ़ॉल्ट डिलीमीटर (;) क्वेरी को जल्दी समाप्त कर देता है। समाधान DELIMITER बदलें, प्रोसीजर बनाएं, फिर डिलीमीटर बहाल करें। उदाहरण टेबल बनाएं: ); स्टोर्ड प्रोसीजर बनाएं DELIMITER ; प्रोसीजर कॉल करें CALL insert_name(Chris, Brown); परिणाम +------------------+---