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

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


जैसा कि हम जानते हैं कि 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'

  1. मैं चल रहे MySQL क्वेरी को कैसे रोक सकता हूं?

    चल रही MySQL क्वेरी को रोकने के लिए, हम प्रक्रिया आईडी के साथ KILL कमांड का उपयोग कर सकते हैं। वाक्य रचना इस प्रकार है - किल प्रोसेस आईडी; या आप नीचे दिए गए सिंटैक्स की मदद से चल रहे MySQL क्वेरी को रोक सकते हैं - mysql.rds_kill(queryId) पर कॉल करें; आइए पहले शो कमांड की मदद से प्रोसेसआईड प्राप्त

  1. मैं MySQL में एक सरणी चर का अनुकरण कैसे कर सकता हूं?

    सरणी चर का अनुकरण करने के बजाय, MySQL में अस्थायी तालिका का उपयोग करें। वाक्य रचना इस प्रकार है - अस्थायी तालिका बनाएं यदि मौजूद नहीं है तो अपना अस्थायी तालिका नाम अपने कॉलमनाम1, अपने कॉलमनाम2,......एन को अपने तालिका नाम से चुनें जहां स्थिति हो उपरोक्त सिंटैक्स को समझने के लिए, आइए पहले एक टेबल बना

  1. समय अंतर कैसे प्राप्त करें यह जांचने के लिए MySQL क्वेरी

    आइए पहले एक टेबल बनाएं - );क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.87 सेकंड) इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें - में डालें DemoTable1570 मान (2019-10-15 16:10:00); क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.15 सेकंड) चयन कथन का उपयोग करके तालिका से सभी रिकॉर्ड प्रदर्शित करें - DemoTabl