我真的希望你能幫助我解決這個問題..我試圖根據舊字段長度是否大於1而運行兩種不同的更新查詢。這背後的想法是,當用戶更新產品時,它會將ProductRef附加到純粹用於搜索的搜索表中。MySQL IF語句觸發內UPDATE語句
簡而言之,如果ProductRef的字符串長度大於0,則用舊的產品參考替換舊的產品參考。否則,請添加新產品參考。以下是我有這麼遠,但它似乎觸發錯誤 -
-- Update the ProductType UpdatedTS that corresponds with this product
-- The below section simply updates the main products UpdatedTS
UPDATE tbl_product_types
SET UpdatedTS = now()
WHERE ID = New.ProductTypeID;
IF (SELECT Length(Old.ProductRef) > 0)
BEGIN
-- We have already stored the product reference so run a replace
UPDATE tbl_product_type_search AS STable
SET `STable.Search` = replace(`Search`,CONCAT(Old.ProductRef,' '),New.ProductRef)
WHERE `STable.ProductTypeID` = Old.ProductTypeID
END
ELSE
BEGIN
-- We haven't yet stored the product reference, store it
UPDATE tbl_product_type_search AS STable
SET `STable.Search` = CONCAT(NEW.ProductRef,' ',`STable.Search`)
WHERE STable.ProductTypeID = New.ProductTypeID
END
供您參考,這裏是有關DB結構:
什麼樣的你有錯誤嗎? – Zagor23 2012-07-25 09:40:27
Old.ProductRef來自哪裏?沒有看到別名Old。 – sel 2012-07-25 09:41:06
我得到一個一般的語法錯誤,說X行和在哪一點的錯誤。舊記錄由記錄定義,因爲它是更新的觸發器。舊的是更新之前舊記錄的內容。 – Chris 2012-07-25 15:21:17