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

MySQL में त्रुटि (Error) कैसे उत्पन्न करें?

MySQL 5.5+ में SIGNAL स्टेटमेंट का उपयोग करके कस्टम त्रुटि उत्पन्न कर सकते हैं, जैसे अन्य भाषाओं में अपवाद (exception)।

सिंटैक्स

SIGNAL SQLSTATE 'sqlstate_value'
SET MESSAGE_TEXT = 'custom_error_message',
    MYSQL_ERRNO = error_number;  -- वैकल्पिक

उदाहरण: कस्टम त्रुटि उत्पन्न करना

mysql> SIGNAL SQLSTATE '42927' SET MESSAGE_TEXT = 'Error Generated';
ERROR 1644 (42927): Error Generated

ट्रिगर में उपयोग (व्यावहारिक उदाहरण)

CREATE TRIGGER validate_age_before_insert
BEFORE INSERT ON users
FOR EACH ROW
BEGIN
    IF NEW.age < 0 OR NEW.age > 150 THEN
        SIGNAL SQLSTATE '45000' 
        SET MESSAGE_TEXT = 'Invalid age: must be between 0 and 150',
            MYSQL_ERRNO = 1001;
    END IF;
END;

सामान्य SQLSTATE कोड

SQLSTATEअर्थ
45000अनहैंडल्ड यूजर-डिफाइंड एक्सेप्शन (सामान्य)
42927सिंटैक्स/एक्सेस नियम उल्लंघन
23000इंटीग्रिटी कंस्ट्रेंट उल्लंघन
22003संख्यात्मक मान सीमा से बाहर

हैंडलर के साथ त्रुटि पकड़ना

DECLARE CONTINUE HANDLER FOR SQLSTATE '45000'
BEGIN
    -- त्रुटि लॉग करें या वैकल्पिक कार्रवाई करें
    INSERT INTO error_log (msg) VALUES ('Custom error caught');
END;

नोट

  • SIGNAL केवल स्टोर्ड प्रोग्राम (प्रोसीजर, फंक्शन, ट्रिगर, इवेंट) के अंदर उपयोग हो सकता है।
  • स्टैंडअलोन क्वेरी में भी काम करता है (जैसा ऊपर दिखाया)।
  • RESIGNAL मौजूदा त्रुटि को पुनः फेंकने के लिए उपयोग करें।
  1. - MySQL में कॉमा-सेपरेटेड मानों वाली टेबल के भीतर खोज कैसे करें

    कॉमा-सेपरेटेड मानों वाली टेबल के भीतर खोज करने के लिए LIKE ऑपरेटर का उपयोग करें। पहले एक टेबल बनाते हैं: mysql> create table DemoTable675(Value text); Query OK, 0 rows affected (0.55 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable675 values(10,56,49484

  1. - MySQL में स्ट्रिंग और पूर्णांक तुलना त्रुटि क्यों नहीं उठाती

    MySQL में स्ट्रिंग और पूर्णांक की तुलना करने पर त्रुटि नहीं होती; MySQL स्ट्रिंग को स्वचालित रूप से संख्या में बदल देता है। यह अप्रत्याशित परिणाम दे सकता है। टेबल बनाएं mysql> CREATE TABLE DemoTable1852 ( Value1 VARCHAR(20), Value2 INT ); डेटा डालें mysql> INSERT INTO DemoTable1852 V

  1. - MySQL कंस्ट्रेंट्स को कैसे संभालता है?

    आइए समझते हैं कि MySQL कंस्ट्रेंट्स को कैसे संभालता है: MySQL हमें ट्रांजैक्शनल टेबल्स (जो रोलबैक की अनुमति देते हैं) और नॉन-ट्रांजैक्शनल टेबल्स (जो रोलबैक की अनुमति नहीं देते) के साथ काम करने में मदद करता है। यही कारण है कि अन्य DBMS की तुलना में MySQL में कंस्ट्रेंट्स को संभालना अलग है। नॉन-ट्रा