gpt4 book ai didi

mysql - 如果 EnrolledDate 是将来的时间,如何让我的 Student_before_update 触发器显示我的错误消息?

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

-- Create a trigger that will prevent  an update to a student table if EnrolledDate is in the future

USE College ;

DROP TRIGGER IF EXISTS Student_Before_Update;

DELIMITER $$

CREATE TRIGGER Student_Before_Update
BEFORE UPDATE ON Student
FOR EACH ROW

BEGIN

IF NEW.EnrolledDate > '2016-10-18' THEN
SIGNAL SQLSTATE VALUE '45000'
SET MESSAGE_TEXT= 'Enrolled date may not be in the future';
END IF;

END $$

DELIMITER ;

UPDATE Student
SET EnrolledDate= DATE(now())
WHERE ID= 1;

UPDATE Student
SET EnrolledDate= DATE_ADD(now(),INTERVAL 1 DAY)
WHERE ID=1;

大家好,

我正在创建一个 BEFORE UPDATE 触发器,如果​​我用 future 的日期更新学生的 EnrolledDate,该触发器应该显示错误消息。例如,我的学生记录中带有 EnrolledDate 的最后插入日期是“2016-10-18”,因此该日期之后的任何其他记录都应标记一条错误消息,指出“注册日期可能不是将来的日期”。我实际上已经为此工作了几个小时,但无论如何我都没有得到。有人可以帮帮我吗?到目前为止,这是我的代码。

最佳答案

你不能直接在 MySQL 中做到这一点,但是有一个 hack 可以让你做到这一点 here :

IF NEW.EnrolledDate > GetDate()  THEN         
DECLARE dummy INT;

SELECT
'Your meaningful error message goes here
INTO dummy
FROM mytable
WHERE mytable.id=new.id
END IF;

EDIT 1 还提供 GetDate() 而不是硬编码日期;假设 EnralledDate 实际上是一个日期字段

编辑2调整代码,因为它是MySQL

关于mysql - 如果 EnrolledDate 是将来的时间,如何让我的 Student_before_update 触发器显示我的错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43531360/

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