मैंने mysql नाम वाले लोगों का उपयोग करके तालिका बनाई है, जिनके पास छह विशेषता आईडी, नाम, अंतिम नाम, dob (दिनांक डेटा प्रकार में स्टोर), लिंग, शहर है और मैं चाहता हूं कि वह मान dob (जन्म तिथि) में 18 से अधिक हो। मैं इस बाधा को कैसे सेट करूं कृपया मदद करें
2 जवाब
MySQL चेक बाधाओं का समर्थन नहीं करता है। तो, MySQL में ऐसा करने का एकमात्र तरीका एक ट्रिगर बनाना या एक संग्रहित प्रक्रिया में सम्मिलित करना है।
आप जिस विशिष्ट तर्क का उपयोग करेंगे वह है:
dob <= curdate() - interval 18 year
तो, लगभग किसी भी अन्य डेटाबेस में, यह कुछ ऐसा दिखाई देगा:
alter table t add constraint chk_t_dob check (dob <= curdate() - interval '18' year);
(नोट: दिनांक संचालन डेटाबेस के बीच भिन्न होता है।)
इस पर 24 जून 2017 को निम्नलिखित पर विचार करें...
CREATE TABLE dobs(dob DATE NOT NULL);
INSERT INTO dobs (dob)
SELECT '2012-01-01' x FROM (SELECT 1) a WHERE FLOOR(DATEDIFF(NOW(),'2012-01-01') / 365.24) >= 18;
INSERT INTO dobs (dob)
SELECT '1975-01-01' x FROM (SELECT 1) a WHERE FLOOR(DATEDIFF(NOW(),'1975-01-01') / 365.24) >= 18;
INSERT INTO dobs (dob)
SELECT '1999-06-25' x FROM (SELECT 1) a WHERE FLOOR(DATEDIFF(NOW(),'1999-06-25') / 365.24) >= 18;
INSERT INTO dobs (dob)
SELECT '1999-06-24' x FROM (SELECT 1) a WHERE FLOOR(DATEDIFF(NOW(),'1999-06-24') / 365.24) >= 18;
SELECT * FROM dobs;
+------------+
| dob |
+------------+
| 1975-01-01 |
| 1999-06-24 |
+------------+
संबंधित सवाल
नए सवाल
mysql
MySQL एक फ्री, ओपन सोर्स रिलेशनल डेटाबेस मैनेजमेंट सिस्टम (RDBMS) है जो स्ट्रक्चर्ड क्वेरी लैंग्वेज (SQL) का उपयोग करता है। इस टैग को अन्य DBs जैसे SQL Server, SQLite आदि के लिए उपयोग न करें। वे विभिन्न DB हैं जो सभी डेटा का प्रबंधन करने के लिए SQL की अपनी बोलियों का उपयोग करते हैं।