mysqlで下記のテーブル(table_a table_b)を作りました。
table_a (name , category)
table_b (name , category , category2)
→ table_bのnameはunique key です。
【1】
table_aに下記のようなcsvファイルをインフレートします。
name category
松田聖子 歌手
郷ひろみ 歌手
小泉今日子 歌手
松田聖子 歌手
郷ひろみ 歌手
小泉今日子 歌手
松田聖子 女優
山口百恵 歌手
小泉今日子 女優
【2】
table_aからtable_bにインサートするようなトリガを作ります。
【Triggerの仕様】
nameはユニークキー。
catrgoryがダブっている場合は無視、カテゴリーに新規文字を見つけた場合は、
catrgoryではなく、category2に書き込む。
【3】
求めたい結果は下記のとおりです。
name category category2
松田聖子 歌手 女優
郷ひろみ 歌手
小泉今日子 歌手 女優
山口百恵 歌手
【行ったこと】
下記のトリガを作りました。
mysql
1 2 3DELIMITER // 4CREATE TRIGGER table_a 5AFTER INSERT ON table_a 6FOR EACH ROW BEGIN 7INSERT INTO `table_b` SET `table_b`.`name`=NEW.`name`,`table_b`.`category`=NEW.category 8ON DUPLICATE KEY UPDATE 9`table_b`.`category2` = (CASE WHEN `table_b`.`category` != NEW.category THEN `table_b`.`category2` ELSE values(NEW.category) END); 10 END; 11// 12DELIMITER ; 13
結果
トリガーが機能していません。
(table_aにもtable_b にもインサート出来ません)
エラーは下記のとおりです。
#1054 '' columnは'values() function' にはありません
どのようなトリガを作れば、希望のテーブルBを作ることができるのでしょうか?
CASE文では厳しいようであれば、IF文でも構いません。
ご指導いただけますようよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。