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

MySQL में BEFORE INSERT ट्रिगर का उपयोग करके कॉलम में शून्य मान रोकना

MySQL में किसी कॉलम में शून्य (0) मान डालने से रोकने के लिए BEFORE INSERT ट्रिगर का उपयोग करें जो मान की जांच करता है और शून्य होने पर SIGNAL के साथ त्रुटि उठाता है।

सिंटैक्स

CREATE TRIGGER trigger_name
BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN
    IF NEW.column_name = 0 THEN
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Error message';
    END IF;
END;

व्यावहारिक उदाहरण

1. टेबल बनाएं

mysql> CREATE TABLE DemoTable (Value INT);
Query OK, 0 rows affected (0.85 sec)

2. ट्रिगर बनाएं

mysql> DELIMITER //
mysql> CREATE TRIGGER preventing_zero_value
BEFORE INSERT ON DemoTable
FOR EACH ROW
BEGIN
    IF NEW.Value = 0 THEN
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'You cannot provide 0 value';
    END IF;
END //
Query OK, 0 rows affected (0.34 sec)
mysql> DELIMITER ;

3. शून्य डालने का प्रयास (ब्लॉक हो जाएगा)

mysql> INSERT INTO DemoTable VALUES (0);
ERROR 1644 (45000): You cannot provide 0 value

4. गैर-शून्य मान डालें (सफल)

mysql> INSERT INTO DemoTable VALUES (10), (-1000);
Query OK, 2 rows affected (0.15 sec)

5. परिणाम जांचें

mysql> SELECT * FROM DemoTable;
+-------+
| Value |
+-------+
| 10    |
| -1000 |
+-------+
2 rows in set (0.00 sec)

ट्रिगर घटक व्याख्या

घटकविवरण
BEFORE INSERTइंसर्ट होने से पहले चलता है, मान संशोधित/अस्वीकृत कर सकता है
FOR EACH ROWप्रत्येक प्रभावित पंक्ति के लिए चलता है
NEW.columnनई पंक्ति का मान (INSERT/UPDATE के लिए)
OLD.columnपुरानी पंक्ति का मान (UPDATE/DELETE के लिए)
SIGNAL SQLSTATE '45000'उपयोगकर्ता-परिभाषित अपवाद उठाता है

अन्य मान्यता उदाहरण

नकारात्मक मान रोकें

IF NEW.age < 0 THEN
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Age cannot be negative';
END IF;

स्ट्रिंग लंबाई मान्य करें

IF CHAR_LENGTH(NEW.username) < 3 THEN
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Username too short';
END IF;

मान को स्वतः सही करें (ब्लॉक करने के बजाय)

BEFORE INSERT ON DemoTable
FOR EACH ROW
BEGIN
    IF NEW.Value = 0 THEN
        SET NEW.Value = 1;  -- डिफ़ॉल्ट मान सेट करें
    END IF;
END;

ट्रिगर देखें और हटाएं

SHOW TRIGGERS;
DROP TRIGGER preventing_zero_value;
  1. - MySQL में फ़ील्ड मान से कॉमा की गिनती करना

    LENGTH और REPLACE से वर्ण गिनती किसी वर्ण (जैसे कॉमा) की घटनाएँ गिनने के लिए: कुल लंबाई - उस वर्ण को हटाने के बाद की लंबाई। सिंटैक्स SELECT LENGTH(col) - LENGTH(REPLACE(col, ,, )) AS comma_count FROM table; तालिका और डेटा INSERT INTO DemoTable1510 VALUES(20,35), (45,67,89), (90,97,101,190); कॉ

  1. - MySQL में UPDATE WHERE से विशिष्ट पंक्ति और कॉलम मान अपडेट करें

    MySQL में UPDATE स्टेटमेंट और WHERE क्लॉज का उपयोग करके विशिष्ट पंक्ति के विशिष्ट कॉलम का मान बदल सकते हैं। सिंटैक्स UPDATE टेबल_नाम SET कॉलम_नाम = नया_मान WHERE शर्त; उदाहरण: StudentId अपडेट करें जहां StudentName = Carol Taylor 1. टेबल बनाएं ); 2. डेटा डालें INSERT INTO DemoTable1569 VALUES(D

  1. - MySQL में यूज़र-डिफ़ाइन्ड वेरिएबल से एक कॉलम का मान दूसरे कॉलम से प्राप्त करें

    MySQL में यूज़र-डिफ़ाइन्ड वेरिएबल (@var) का उपयोग करके पिछली पंक्ति के मान के आधार पर वर्तमान पंक्ति के लिए चल योग (क्यूमुलेटिव सम) या अन्य व्युत्पन्न मान की गणना कर सकते हैं। टेबल बनाएं mysql> CREATE TABLE DemoTable1868 (Value INT); डेटा डालें mysql> INSERT INTO DemoTable1868 VALUES(10), (2