MySQL触发器将日期插入具有唯一匹配ID的行
Posted
技术标签:
【中文标题】MySQL触发器将日期插入具有唯一匹配ID的行【英文标题】:MySQL trigger to insert date to row with unique matching ID 【发布时间】:2016-02-09 01:03:12 【问题描述】:我需要编写一个 SQL 触发器,以便在插入后将日期插入到另一个表的一行中。
数据是这样进来的:
一个包含 JobID 的表单被提交到 _OnsiteTable,这个 JobID 匹配包含 _JobTable 中 JobID 值的当前条目。将数据插入 _OnsiteTable 后,我需要一个触发器,将当前日期插入 JobTable 中名为 JobClosedDate 的列中。
需要将日期插入到与_OnsiteTable表格中输入的JobID值相匹配的行中。
到目前为止我有这个,但我不知道如何比较表之间的 JobID 值并插入到特定行中。
CREATE TRIGGER UpdateClosedDate
AFTER INSERT on _OnsiteTable
BEGIN
Declare ClosedDate DATETIME;
SET ClosedDate = CURDATE();
CASE WHEN (ClosedDate) = ?
THEN INSERT INTO `_JobTable`( `JobClosedDate`)
VALUES
( ClosedDate);
END CASE;
END
非常感谢任何帮助!
现在可以完成查询,谢谢!如下:
CREATE TRIGGER UpdateClosedDate
AFTER INSERT on _OnsiteTable
BEGIN
Declare ClosedDate DATETIME;
SET ClosedDate = CURDATE();
UPDATE `_JobTable` SET `JobClosedDate` = ClosedDate WHERE `JobID` = new.JobID;
END
【问题讨论】:
只需将hole case语句更改为:update _JobTable set JobClosedDate = ClosedDate where JobID = NEW.JobID;
谢谢! @JorgeCampos 实际上我遇到了语法错误,我是否需要修改该行某处的语法才能使其正确?
可能是我没有用括号。
啊,明白了。需要将我的表格和列放入 `` - 现在只是测试谢谢@JorgeCampos
让我知道它是否有效,然后我会添加它作为答案:)
【参考方案1】:
由于问题已通过给定的评论解决,我将在此处添加以供其他有类似问题的人参考:
由于您想更新一列(“将一个值插入一列...”)您只需要修复您的触发器,更改您当前的case
对update
命令的声明如下:
UPDATE `_JobTable`
SET `JobClosedDate` = ClosedDate
WHERE `JobID` = NEW.JobID;
【讨论】:
以上是关于MySQL触发器将日期插入具有唯一匹配ID的行的主要内容,如果未能解决你的问题,请参考以下文章