जैसा कि हम जानते हैं कि MySQL संदर्भात्मक अखंडता के लिए विदेशी कुंजी का समर्थन करता है लेकिन यह CHECK बाधा का समर्थन नहीं करता है। लेकिन हम ट्रिगर्स का उपयोग करके उनका अनुकरण कर सकते हैं। इसे नीचे दिए गए उदाहरण की मदद से स्पष्ट किया जा सकता है -
उदाहरण
मान लीजिए हमारे पास 'कार' नाम की एक टेबल है जिसमें फिक्स सिंटैक्स रजिस्ट्रेशन नंबर हो सकता है जैसे दो अक्षर, एक डैश, तीन अंक, एक डैश, दो अक्षर इस प्रकार हैं -
mysql> Create table car (number char(9)); Query OK, 0 rows affected (0.32 sec)
मानों को अद्यतन करने के लिए CHECK CONSTRAINT का अनुकरण करने के लिए अद्यतन से पहले ट्रिगर बनाना -
अब, मान लीजिए कि यदि हम गलत मान के साथ तालिका को अपडेट करने का प्रयास करेंगे तो MySQL हमें ऐसा करने से नहीं रोकेगा -
mysql> update car set number='AB-2X5-YZ'; Query OK, 1 row affected (0.04 sec) Rows matched: 1 Changed: 1 Warnings: 0
उपरोक्त क्वेरी ने तालिका 'कार' में गलत मान अपडेट किया है। निम्नलिखित क्वेरी में हम एक अद्यतन से पहले ट्रिगर बनाने जा रहे हैं जो हमें तालिका में गलत डेटा अपडेट करने से रोकेगा -
mysql> delimiter // mysql> create trigger car_update_value before update 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.11 sec) mysql> Delimiter ; mysql> update car set number='AB-2X5-YZ'; ERROR 1644 (45000): Not a valid number