जैसा कि हम जानते हैं कि MySQL संदर्भात्मक अखंडता के लिए विदेशी कुंजी का समर्थन करता है लेकिन यह CHECK बाधा का समर्थन नहीं करता है। लेकिन हम ट्रिगर्स का उपयोग करके उनका अनुकरण कर सकते हैं। इसे नीचे दिए गए उदाहरण की मदद से स्पष्ट किया जा सकता है -
उदाहरण
मान लीजिए हमारे पास 'car1' नाम की एक टेबल है जिसमें फिक्स सिंटैक्स रजिस्ट्रेशन नंबर हो सकता है जैसे दो अक्षर, एक डैश, तीन अंक, एक डैश, दो अक्षर इस प्रकार हैं -
mysql> Create table car1 (number char(9)); Query OK, 0 rows affected (0.32 sec) mysql> Insert into car1 values('AB-235-YZ'); Query OK, 1 row affected (0.10 sec)
उपरोक्त मान मान्य है लेकिन उस मूल्य के बारे में क्या है जिसे हम अगली क्वेरी में सम्मिलित करने जा रहे हैं।
mysql> insert into car1 values('AB-2X5-YZ'); Query OK, 1 row affected (0.04 sec)
उपरोक्त मान मान्य नहीं है क्योंकि इसमें अंकों के बीच एक वर्ण होता है जो हमारे द्वारा उपयोग किए जा रहे निश्चित सिंटैक्स के विरुद्ध होता है।
मानों को डालने और अपडेट करने के लिए CHECK CONSTRAINT का अनुकरण करने के लिए VIEW बनाना -
mysql> Create view car_invalid_check as -> Select * from car1 WHERE number rlike '^[[:alpha:]]{2}-[[:digit:]]{3}-[[:alpha:]]{2}$' -> with check option; Query OK, 0 rows affected (0.12 sec) mysql> Insert into car_invalid_check values('AB-2X5-YZ'); ERROR 1369 (HY000): CHECK OPTION failed 'query.car_invalid_check' mysql> Insert into car_invalid_check values('AB-235-YZ'); Query OK, 1 row affected (0.09 sec) mysql> Update car_invalid_check SET NUMBER = 'AB-2X5-ZT'; ERROR 1369 (HY000): CHECK OPTION failed 'query.car_invalid_check'