在MySQL上添加年龄从出生日期字段计算并验证年龄是否大于18的检查约束,可以通过以下步骤实现:
a. 创建一个名为"calculate_age"的触发器,在插入或更新数据时触发。
DELIMITER //
CREATE TRIGGER calculate_age BEFORE INSERT ON users
FOR EACH ROW
BEGIN
SET NEW.age = TIMESTAMPDIFF(YEAR, NEW.birthdate, CURDATE());
END //
DELIMITER ;
b. 创建一个名为"check_age"的触发器,在插入或更新数据时触发,用于验证年龄是否大于18岁。
DELIMITER //
CREATE TRIGGER check_age BEFORE INSERT ON users
FOR EACH ROW
BEGIN
IF NEW.age < 18 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Age must be greater than 18.';
END IF;
END //
DELIMITER ;
示例插入数据:
INSERT INTO users (birthdate) VALUES ('2000-01-01');
示例更新数据:
UPDATE users SET birthdate = '1990-01-01' WHERE id = 1;
如果年龄小于18岁,将会抛出以下错误:
ERROR 1644 (45000): Age must be greater than 18.
这样,通过使用MySQL的触发器,我们可以在插入或更新数据时自动计算年龄并验证是否大于18岁的检查约束。
领取专属 10元无门槛券
手把手带您无忧上云