我有一个MySQL(5.1.67)表'跟踪器',其中TIMESTAMP字段为“ close_time ”。
在同一个表格中,我有字符串字段' status '
当状态字段更新为特定文本值时,我希望使用CURRENT_TIMESTAMP值更新 close_time 字段,例如“已关闭”。
以下是INSERT的示例: How can I write a trigger that updates rows in the same table, before the insert is commited?
我尝试过类似的东西:
CREATE TRIGGER `close_time_trigger` BEFORE UPDATE ON `tracker` FOR EACH ROW
BEGIN
IF NEW.status = 'Closed' THEN
SET NEW.close_time = CURRENT_TIMESTAMP;
END IF;
END
但是我收到了错误:你的SQL语法错误了......在第4行。
我尝试了一些其他的变化,但我发现它们都不起作用。 请帮助为我的案例创建正确的触发器。
答案 0 :(得分:0)
您是否设置了DELIMITER
?
这应该有效:
DELIMITER $$
CREATE TRIGGER `close_time_trigger` BEFORE UPDATE ON `tracker` FOR EACH ROW
BEGIN
IF NEW.status = 'Closed' THEN
SET NEW.close_time = CURRENT_TIMESTAMP;
END IF;
END $$
DELIMITER ;
答案 1 :(得分:-1)
你没有告诉它要更新什么。
CREATE TRIGGER `close_time_trigger` BEFORE UPDATE ON `tracker` FOR EACH ROW
BEGIN
IF NEW.status = 'Closed' THEN
update tracker
SET NEW.close_time = CURRENT_TIMESTAMP;
END IF;
END