我正在尝试创建一个触发器,它将根据用户输入的lat / lng列更新GEOMETRY列 . 我的触发器看起来像这样 -
CREATE TRIGGER `tbl.foo`
AFTER INSERT ON `tbl` FOR EACH ROW
BEGIN
UPDATE tbl
SET coord = Point(lng, lat)
WHERE id = NEW.id;
END
但是,当我插入一个带有lng,lat值的新行时,我收到以下错误 -
ERROR 1442(HY000):无法更新存储函数/触发器中的表'tbl',因为它已被调用此存储函数/触发器的语句使用 .
我可以不创建这样的触发器吗?如果没有,自动化的方法是什么?
2 回答
尝试使用BEFORE INSERT触发器并修改所需的值,例如 -
EDIT
根据这里找到的MySQL文档:http://dev.mysql.com/doc/refman/5.0/en/stored-program-restrictions.html
如果你希望coord始终是Point(lng,lat),你可能只想将一个视图置于表的上方并将其作为列之一,然后查询视图而不是表 .
如果我想到另一个解决方法,我一定会发布它 .