0

我想出正确的语句来更新与插入触发器相同的表中的字段时遇到问题。它适用于 MySql 表。

基本上我需要在字段中检查插入的值是否有基色,所以如果字段是:“钴蓝色”,我希望插入字段的颜色为“蓝色”。

我已经想出了以下语句来获得正确的颜色:

SELECT CASE
    WHEN 'value' LIKE '%blue%' THEN 'Blue'
    WHEN 'value' LIKE '%red%' THEN 'Red'
    ELSE 'Other color'
END AS normalized_color
FROM 'products_extra_fields'
WHERE 'products_extra_fields'.'value' = 'color'

现在接下来我需要它在表上的触发器中插入 WHERE 'products_extra_fields'.'value' = 'color'。

我似乎无法弄清楚如何使用 SELECT CASE 语句构建此触发器以包含 UPDATE。

4

1 回答 1

1

插入后不需要更新表,只需更改要插入到触发器中的值即可。

CREATE TRIGGER `before_insert_products_extra_fields` 
BEFORE INSERT ON `products_extra_fields` FOR EACH ROW 
BEGIN
    IF(NEW.name = 'color') THEN
        SET NEW.value = CASE 
            WHEN NEW.value LIKE '%red%' THEN 'red'
            WHEN NEW.value LIKE '%blue%' THEN 'blue'
            ...
            ELSE 'other'
        END;
    END IF;
END

此外,您可能应该BEFORE UPDATE在该表上创建一个类似的触发器。

于 2013-04-10T19:30:29.703 回答