gpt4 book ai didi

mysql - 创建一个触发器来检查出生日期是否有效

转载 作者:行者123 更新时间:2023-11-29 15:25:20 25 4
gpt4 key购买 nike

我还阅读了另一个问题,但没有找到准确的答案,因此请不要将其标记为重复。所以,我想要一个触发器来检查 DATE 是否是有效的出生日期。因此,一开始我尝试使用 birth_date<NOW() 创建自定义约束。但我显然遇到了错误

然后我尝试使用另一个问题中的这个触发器

CREATE OR REPLACE TRIGGER check_birth_date
BEFORE INSERT OR UPDATE ON employee
FOR EACH ROW
BEGIN
IF( :new.emp_dob < date '1900-01-01' or
:new.emp_dob > sysdate )
THEN
RAISE_APPLICATION_ERROR(
-20001,
'EMployee date of birth must be later than Jan 1, 1900 and earlier than today' );
END IF;
END;

但我遇到语法错误,因为它是在 Oracle 中而不是在 mySQL 中。

那么,如何将其转换为 mySQL 触发器?我正在使用 MySQL Workbench 8.0

我仍然是第一次尝试使用 MySQL,所以我不太擅长它,所以如果你可以的话,我真的很高兴知道你为什么使用某些东西以及如果可能的话如何使用:D

提前致谢

最佳答案

考虑以下因素:

SELECT '2000-11-01' BETWEEN '1900-01-01' AND CURDATE() x;
+---+
| x |
+---+
| 1 |
+---+

SELECT '1899-11-01' BETWEEN '1900-01-01' AND CURDATE() x;
+---+
| x |
+---+
| 0 |
+---+

SELECT '2020-11-01' BETWEEN '1900-01-01' AND CURDATE() x;
+---+
| x |
+---+
| 0 |
+---+

所以这可以调整为:

INSERT INTO valid_dates
SELECT '2000-11-01' FROM (SELECT 1)a WHERE '2000-11-01' BETWEEN '1900-01-01' AND CURDATE();

关于mysql - 创建一个触发器来检查出生日期是否有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59127487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com