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

तालिका में मान डालने के लिए CHECK CONSTRAINT का अनुकरण करने के लिए INSERT ट्रिगर का उपयोग कैसे किया जा सकता है?


जैसा कि हम जानते हैं कि MySQL संदर्भात्मक अखंडता के लिए विदेशी कुंजी का समर्थन करता है लेकिन यह CHECK बाधा का समर्थन नहीं करता है। लेकिन हम ट्रिगर्स का उपयोग करके उनका अनुकरण कर सकते हैं। इसे नीचे दिए गए उदाहरण की मदद से स्पष्ट किया जा सकता है -

उदाहरण

मान लीजिए कि हमारे पास 'कार' नाम की एक टेबल है जिसमें फिक्स सिंटैक्स रजिस्ट्रेशन नंबर हो सकता है जैसे दो अक्षर, एक डैश, तीन अंक, एक डैश, दो अक्षर इस प्रकार हैं -

mysql> Create table car (number char(9));
Query OK, 0 rows affected (0.32 sec)

mysql> Insert into car values('AB-235-YZ');
Query OK, 1 row affected (0.10 sec)

उपरोक्त मान एक मान्य है लेकिन उस मूल्य के बारे में क्या है जिसे हम अगली क्वेरी में सम्मिलित करने जा रहे हैं।

mysql> insert into car values('AB-2X5-YZ');
Query OK, 1 row affected (0.04 sec)

उपरोक्त मान मान्य नहीं है क्योंकि इसमें अंकों के बीच एक वर्ण होता है जो हमारे द्वारा उपयोग किए जा रहे निश्चित सिंटैक्स के विरुद्ध होता है।

इन्सर्ट से पहले ट्रिगर बनाना ताकि मान डालने के लिए CHECK CONSTRAINT का अनुकरण किया जा सके -

अब, हम इस प्रकार के सम्मिलन को रोकने के लिए निम्नानुसार एक ट्रिगर बना सकते हैं -

mysql> delimiter //
mysql> create trigger car_insert_value before insert on car
    -> for each row
    -> begin
    ->     if new.number not rlike '^[[:alpha:]]{2}-[[:digit:]]{3}-[[:alpha:]]{2}$'
    ->     then
    ->         signal sqlstate '45000' set message_text = 'Not a valid Number';
    ->     end if;
    -> end //
Query OK, 0 rows affected (0.15 sec)
mysql> Delimiter ;

mysql> Delete from car;
Query OK, 2 rows affected (0.06 sec)

अब, जब हम गलत नंबर डालने का प्रयास करेंगे, तो ऊपर बनाया गया ट्रिगर हमें ऐसा करने से रोकेगा और इस प्रकार एक त्रुटि देगा -

mysql> insert into car values('AB-2X5-YZ');
ERROR 1644 (45000): Not a Valid Number

लेकिन, हम मान्य मान इस प्रकार सम्मिलित कर सकते हैं -

mysql> insert into car values('AB-235-YZ');
Query OK, 1 row affected (0.04 sec)

  1. हम MySQL व्यू में किसी भी वैल्यू को कैसे अपडेट कर सकते हैं क्योंकि हम MySQL टेबल में वैल्यूज को अपडेट कर सकते हैं?

    जैसा कि हम जानते हैं कि UPDATE स्टेटमेंट की मदद से हम MySQL टेबल में वैल्यूज को अपडेट कर सकते हैं और इसी तरह हम MySQL व्यूज में वैल्यूज को अपडेट कर सकते हैं। UPDATE स्टेटमेंट का सिंटैक्स वही होगा, टेबल नाम के स्थान पर हमें व्यू का नाम देना होगा। हम उपरोक्त अवधारणा को स्पष्ट करने के लिए इन्फो नाम के

  1. CHECK CONSTRAINT का अनुकरण करने के लिए VIEWS का उपयोग कैसे किया जा सकता है?

    जैसा कि हम जानते हैं कि MySQL संदर्भात्मक अखंडता के लिए विदेशी कुंजी का समर्थन करता है लेकिन यह CHECK बाधा का समर्थन नहीं करता है। लेकिन हम ट्रिगर्स का उपयोग करके उनका अनुकरण कर सकते हैं। इसे नीचे दिए गए उदाहरण की मदद से स्पष्ट किया जा सकता है - उदाहरण मान लीजिए कि हमारे पास car1 नाम की एक टेबल है ज

  1. मैं MySQL में किसी तालिका में चेक बाधा कैसे जोड़ूं?

    किसी तालिका में चेक बाधा जोड़ने के लिए, आइए पहले एक तालिका बनाएं। CREATE table yourTableName (    Column_name1 datatyep,    .    .    .    .    Column_name N datatype,    check( condition) ); निम्न प्रकार से आप एक चेक बाधा बनाकर