簡體   English   中英

MYSQL觸發器-插入之前更新其他表中的表中的值

[英]MYSQL Trigger - update values in table from other table before insert

我正在嘗試在從另一個表插入之前更新值-這是我所擁有的:

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;

如果將NEW.fk_postcode替換為帶引號的有效英國郵政編碼(即:“ W1 3XX”),它將正常工作,並且觸發器將hkpg_geo表的ID替換為字段fk_postcode。

我做錯了什么? 如何將NEW.fk_postcode的值分配給剛剛聲明的變量?

您具有分配順序:

SET OP_VAR = NEW.fk_postcode;
. . .
SET NEW.fk_postcode = NP_VAR;

new.fk_postcode具有相同的類型。 但是這些列分別是textinteger

您需要修復類型不兼容。 我的猜測是fk_postcode實際上是一個整數,並且與值(將是字符串)分開。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM