この問題の解決にご協力いただければ幸いです。古いフィールドの長さが 1 より大きいかどうかに基づいて、2 種類の更新クエリを実行しようとしています。この背後にある考え方は、ユーザーが製品を更新すると、純粋に検索に使用される検索テーブルに ProductRef が追加されるというものです。
したがって、単純に、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 構造を次に示します。