我有一个名为client_property
的表和另一个名为client_property_version
的类似结构的表。
我想要做的是,每当有人更新client_property
表中的一行时,更新前的整行应插入client_property_version
中,以便我可能有类似审计表的内容。我试图做这样的事情:
CREATE TRIGGER client_property_audit BEFORE UPDATE ON client_property
FOR EACH ROW BEGIN
INSERT INTO `client_property_version` select * from client_property where property_id = OLD.property_id;
END;
但它抛出了语法错误。任何人都可以建议我做一个更好的方法吗?
PS:我没有在client_property_version
表中保留任何唯一列。
答案 0 :(得分:0)
如果您没有设置另一个分隔符而不是;
,那么该语句将以第一个;
结束,并且您的触发器定义将不完整。您需要告诉 MySQL 该语句应该以您定义的分隔符结束。之后,您可以使用delimiter ;
delimiter |
CREATE TRIGGER client_property_audit BEFORE UPDATE ON client_property
FOR EACH ROW BEGIN
INSERT INTO `client_property_version`
select * from client_property where property_id = OLD.property_id;
END;
|
delimiter ;