जैसा कि हम जानते हैं कि MySQL रेफरेंशियल इंटीग्रिटी के लिए फॉरेन की सपोर्ट करता है लेकिन यह CHECK कंस्ट्रेंट सपोर्ट नहीं करता। लेकिन हम ट्रिगर्स का उपयोग करके उनका अनुकरण कर सकते हैं। इसे नीचे दिए गए उदाहरण से स्पष्ट किया जा सकता है -
उदाहरण
मान लीजिए हमारे पास 'car' नामक एक टेबल है जिसमें रजिस्ट्रेशन नंबर का निश्चित सिंटैक्स हो सकता है जैसे दो अक्षर, एक डैश, तीन अंक, एक डैश, दो अक्षर -
mysql> Create table car (number char(9)); Query OK, 0 rows affected (0.32 sec)
BEFORE UPDATE ट्रिगर बनाकर 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
उपरोक्त क्वेरी ने टेबल 'car' में गलत मान अपडेट कर दिया। निम्न क्वेरी में हम एक BEFORE UPDATE ट्रिगर बनाने जा रहे हैं जो हमें टेबल में गलत डेटा अपडेट करने से रोकेगा -
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