之前从其他表表更新值我试图从另一个表插入之前更新的值 - 这里是我有:MYSQL触发器 - 插入
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它工作正常,并触发替换场fk_postcode与hbrpg_geo表的id。
我做错了什么?我怎样才能将NEW.fk_postcode的值赋给我刚才声明的变量?
你知道新新fk_postcode值将是一个INT不是形式“W1 3XX”正确的? (它也显然是一个数据库自动增量列,并且大多是毫无意义的)也许还有另外一个可以使用的hbrpg_geo字段?压缩?除此之外,你只需要验证它是否在那里,而不是改变它。 – 2013-07-09 02:15:11
对我来说,你似乎可以使用邮政编码作为你的'hbrpg_geo'表中的一个自然键,并且(可能)删除合成的'id'键。 – eggyal
忘了补充一点,fk_postcode是一个整数。 –