我无法使用此page作为参考以及此网站上的其他帖子来使用以下代码。我需要创建一个触发器,只要表A更新,它就会在表B中插入记录。下面的代码显示了我正在尝试的内容;但是这会产生语法错误(#1064)。我也不清楚是否需要包含'DELIMITER $$'语法。感谢您的帮助
DELIMITER $$
CREATE TRIGGER MyTrigger
AFTER INSERT
ON TableA
FOR EACH ROW
BEGIN
INSERT INTO TableB SET
TableA_id = NEW.TableB_id,
TableA_date = NEW.TableB_date,
TableA_comment = NEW.TableB_comment;
END;
END $$
DELIMITER ;
编辑:在上面的伪代码中,我使用$ TableName_ $ FieldName约定来表明列A属于表A,列B属于表B.我应该已经做了更多在我原来的问题中清楚。有人在下面评论我有错误的新指标(应该在表A),但该评论似乎已被删除。有人可以确认吗?谢谢你的帮助
答案 0 :(得分:1)
试试这个:
DELIMITER $$
CREATE TRIGGER MyTrigger
AFTER INSERT
ON TableA
FOR EACH ROW
BEGIN
INSERT INTO TableB SET
TableB_id = NEW.TableA_id,
TableB_date = NEW.TableA_date,
TableB_comment = NEW.TableA_comment;
END $$
DELIMITER ;
这里的DELIMITER
用于告诉mysql将以下所有;
视为定义的一部分,而不是实际的命令终止。
请注意,我在结束END;
END $$
答案 1 :(得分:1)
您的触发器中有END;
个错误(END
每个BEGIN
应与BEGIN ... END
配对。
就此而言,你甚至不需要CREATE TRIGGER
块,因为触发器只包含一个语句(如果省略该块,你甚至不需要更改语句分隔符,因为没有分号在 CREATE TRIGGER MyTrigger AFTER INSERT ON TableA FOR EACH ROW
INSERT INTO TableB SET
TableA_id = NEW.TableB_id,
TableA_date = NEW.TableB_date,
TableA_comment = NEW.TableB_comment
语句中出现:
{{1}}