जैसा कि हम जानते हैं कि 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'
व्याख्या: WITH CHECK OPTION वाला व्यू केवल उन्हीं पंक्तियों को इंसर्ट/अपडेट करने देता है जो व्यू की WHERE शर्त को पूरा करती हैं। यह बेस टेबल पर सीधे ऑपरेशन को नहीं रोकता, केवल व्यू के माध्यम से।