2017-06-24 7 views

Antwort

0

MySQL unterstützt keine Überprüfung Einschränkungen. Die einzige Möglichkeit, dies in MySQL zu tun, besteht darin, einen Trigger zu erstellen oder die Einfügung in eine gespeicherte Prozedur umzubrechen.

Die spezifische Logik, die Sie verwenden würde ist:

dob <= curdate() - interval 18 year 

also in fast jede andere Datenbank, das etwas aussehen würde:

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

(Anmerkung: Datum Operationen zwischen Datenbanken variieren.)

+0

... oder verwenden Sie einfach eine Abfrage – Strawberry

0

auf das Betrachten wir die folgende, 24. Juni 2017 der ...

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 | 
+------------+