Mysql 使用存储过程中的值更新触发器中的表

Mysql 使用存储过程中的值更新触发器中的表,mysql,sql,stored-procedures,triggers,Mysql,Sql,Stored Procedures,Triggers,我想制作一个触发器,用一个过程的值更新一个表。我希望触发器执行如下操作: DELIMITER $$ CREATE TRIGGER onInsertVillage AFTER INSERT ON Village FOR EACH ROW BEGIN UPDATE Village V SET V.xCoordinaat = x, V.yCoordinaat = y FROM getVrijePlaatsInMap(); END$$ DELIMITER ; 但这不起作用。。顺便说一下,该过程

我想制作一个触发器,用一个过程的值更新一个表。我希望触发器执行如下操作:

DELIMITER $$
CREATE TRIGGER onInsertVillage AFTER INSERT ON Village
FOR EACH ROW
BEGIN
    UPDATE Village V SET V.xCoordinaat = x, V.yCoordinaat = y FROM getVrijePlaatsInMap();
END$$
DELIMITER ;

但这不起作用。。顺便说一下,该过程返回一个x和y值。有没有一种可能的方法让触发器完成它的工作?

我认为触发器应该为插入表
村庄
中的每个新村庄调整
xCoordinaat
yCoordinat
。如果是这种情况,我将使用插入之前的
-触发器,它可以访问要插入的各个村庄记录的值(插入之前)。在缺少示例的模式和存储过程代码的情况下,我编写了一个简化程序来演示这种方法:

创建表测试(
整数,
b int,
智力
);
创建过程simpleproc(在a int、OUT b int、OUT c int中)
开始
b组=a分区100;
设置c=a%100;
结束;
在插入前创建触发器测试
插入前
对每行进行测试
开始
调用simpleproc(new.a,new.b,new.c);
结束;
在试验(a、b、c)中插入值(120,0,0)、(210,0,0)、(303,0,0);
这将产生:

  a | b | c
----|---|---
120 | 1 | 20
210 | 2 | 10
303 | 3 | 3
让你的方法发挥作用可能有点棘手;在插入后的
触发器中,您可以访问
。新的
-值,但不能修改它们;因此,您必须对表进行更新,但必须以某种方式标识刚刚插入的村庄