触发器仅将特定年龄以上的用户添加到表中?

问题描述 投票:0回答:1

我想编写一个触发器(使用 MySQL),在将记录输入用户表之前检查用户是否超过特定年龄。否则,请勿将该记录输入表中。

我最初尝试了

CHECK
约束,但不允许存储过程、函数等,所以我正在尝试触发器。

到目前为止,我已经

DELIMITER //

CREATE TRIGGER t_age_check
BEFORE INSERT
ON users
FOR EACH ROW
BEGIN
    DECLARE dob DATE;
    IF
        YEAR(FROM_DAYS(DATEDIFF(NOW(), dob))) + 0 >= 18 THEN
        INSERT INTO users
    END IF
END//

DELIMITER ;

但我不确定这是否正确或有效。我以前从未写过触发器(而且我对 SQL 很陌生),但我想我在理论上理解它。任何有关解决此问题或更好的替代方案的帮助将不胜感激!

mysql database triggers
1个回答
0
投票
取消

插入,但如果数据有效,则让它继续。 使用

NEW.<column_name>

引用尝试插入的当前行的列。我假设您的

users
表有一个名为
DATE
dob
列。
例如:

DELIMITER // CREATE TRIGGER t_age_check BEFORE INSERT ON users FOR EACH ROW BEGIN IF NEW.dob > CURDATE() - INTERVAL 18 YEAR THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Users must be at least 18 years of age'; END IF; END// DELIMITER ;

© www.soinside.com 2019 - 2024. All rights reserved.