我真的希望你能帮助我解决这个问题..我试图根据旧字段长度是否大于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