我已经使用MySQL名为people创建了表,它有六个属性id,name,lastname,道布(存储在Date数据类型中),性别,城市,我希望在道布(出生日期)中输入的值大于18,我如何设置这个限制,请帮助
发布于 2017-06-24 20:09:31
MySQL不支持检查约束。因此,在MySQL中执行此操作的惟一方法是在存储过程中创建触发器或包装插入。
您将使用的特定逻辑是:
dob <= curdate() - interval 18 year因此,在几乎任何其他数据库中,这将类似于:
alter table t add constraint chk_t_dob check (dob <= curdate() - interval '18' year);(注意:日期操作因数据库而异。)
发布于 2017-06-24 21:31:33
考虑以下内容,在2017年6月24日……
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 |
+------------+https://stackoverflow.com/questions/44736144
复制相似问题