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 に答える