मैंने mysql नाम वाले लोगों का उपयोग करके तालिका बनाई है, जिनके पास छह विशेषता आईडी, नाम, अंतिम नाम, dob (दिनांक डेटा प्रकार में स्टोर), लिंग, शहर है और मैं चाहता हूं कि वह मान dob (जन्म तिथि) में 18 से अधिक हो। मैं इस बाधा को कैसे सेट करूं कृपया मदद करें

1
Muhammad Khezar Bangash 24 जून 2017, 14:58

2 जवाब

सबसे बढ़िया उत्तर

MySQL चेक बाधाओं का समर्थन नहीं करता है। तो, MySQL में ऐसा करने का एकमात्र तरीका एक ट्रिगर बनाना या एक संग्रहित प्रक्रिया में सम्मिलित करना है।

आप जिस विशिष्ट तर्क का उपयोग करेंगे वह है:

dob <= curdate() - interval 18 year

तो, लगभग किसी भी अन्य डेटाबेस में, यह कुछ ऐसा दिखाई देगा:

alter table t add constraint chk_t_dob check (dob <= curdate() - interval '18' year);

(नोट: दिनांक संचालन डेटाबेस के बीच भिन्न होता है।)

0
Gordon Linoff 24 जून 2017, 15:09

इस पर 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 |
+------------+
0
Strawberry 24 जून 2017, 16:31