我数据库中的一个表包含 check_in_date
以及 checkout_date
指某一物品。我想创建一个触发器,如果有人输入的 checkout 日期早于签入日期,则不允许更新表,例如,如果check-in=2017-10-16,则2017-10-14不允许 checkout 。我读过https://dev.mysql.com/doc/refman/5.7/en/using-date.html 它说,当比较两列的日期时,你应该使用 STRCMP
. 所以我试过了,但它仍然接受任何日期。我可能在用 STRCMP
错,当第一个参数较小时,它应该返回-1,但我不确定在if语句中使用它是否正确。
DROP TRIGGER IF EXISTS check_dates;
DELIMITER //
CREATE TRIGGER check_dates
BEFORE UPDATE ON dates
FOR EACH ROW
BEGIN
IF STRCMP('NEW.checkout_date', 'check_in_date')=-1
THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Checkout date must be after the checkin.';
END IF;
END;//
DELIMITER ;
暂无答案!
目前还没有任何答案,快来回答吧!