【发布时间】:2013-04-11 03:30:29
【问题描述】:
我在想出正确的语句来更新与插入触发器相同的表中的字段时遇到问题。这是一个 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'
现在接下来我需要将它放在表上的触发器中 insert WHERE 'products_extra_fields'.'value' = 'color'。
我似乎无法弄清楚如何使用 SELECT CASE 语句构建此触发器以包含 UPDATE。
【问题讨论】:
-
你的价值怎么可能同时是
= 'color'和LIKE '%red%'?此查询将始终返回“其他颜色”。 -
值 'color' 只是 'products_extra_fields' 表中字段的名称。这样做是因为该表包含添加到产品表中的每个额外字段的记录。这可能会令人困惑,但查询确实有效,我得到了一个很好的所有颜色列表,刚刚再次测试。
-
嗯..好的..哪个字段有字段名,哪个有值?
-
该表的结构如下:id、productId、name、value。第一条记录是:1、1、color、red。第二条记录可以是:2、1、尺寸、大号第三条记录:3、2、颜色、蓝色等。