我正在尝试的是在从另一个表插入之前更新一个值 - 这就是我所拥有的:
2 表
hbrpg_geo{
...
id INT //id that needs to be written into hbrpg_person
zip VARCHAR(10) //contains postcode
...
}
hbrpg_person{
...
fk_postcode // initially it's filled with UK postcode - but trigger should change value to id of hbrpg_geo of matching postcode (hbrpg_geo.zip).
...
}
扳机:
...
BEGIN
DECLARE NP_VAR integer;
DECLARE OP_VAR TEXT;
SET OP_VAR = NEW.fk_postcode;
SET TE_VAR = OP_VAR;
SELECT hbrpg_geo.id INTO NP_VAR FROM hbrpg_geo WHERE hbrpg_geo.zip = OP_VAR;
SET NEW.fk_postcode = NP_VAR;
END
这一切似乎都在工作,除了:
SET OP_VAR = NEW.fk_postcode;
如果我用引号中的有效英国邮政编码(即:“W1 3XX”)替换 NEW.fk_postcode,它可以正常工作,并且触发器用 hbrpg_geo 表的 id 替换字段 fk_postcode。
我做错了什么?如何将 NEW.fk_postcode 的值分配给我刚刚声明的变量?