2016-08-04 4 views
1

私は、別の列のエントリに関するcase文で終わるMySQLトリガを持っています。MySQL - カスタム値を入力してトリガーをオーバーライドするにはどうすればよいですか?

NEW.reference_column = CASE NEW.entry_column 
WHEN "Test Value 1" THEN 1 
WHEN "Test Value 2 " THEN 2 
WHEN "Test Value 3" THEN 3 
ELSE 4 END; 

はしかし、時には予測できないreference_columnの値があり、私は他の値を挿入する必要はありませんが、カスタム1。 entry_columnにカスタム値を入力し、トリガーをオーバーライドしてelse値を挿入しないようにするにはどうすればよいですか?

編集:ELSE値をスキップしようとしましたが、オーバーライドしようとすると空白の修正が加えられました。

答えて

1

Hmmmm。 。 。このような論理はあなたが望むことをするだろうか?

NEW.reference_column = (CASE WHEN NEW.entry_column = 'Test Value 1' THEN 1 
          WHEN NEW.entry_column = 'Test Value 2' THEN 2 
          WHEN NEW.entry_column = 'Test Value 3' THEN 3 
          WHEN NEW.entry_column LIKE 'Custom %' 
          THEN substring_index(NEW.entry_column, ' ', -1) + 0 
          ELSE 4 
         END); 

新しい値は'Custom 5'と挿入されます。

+1

ありがとうございます!あなたの答えは、私が解決策をどのように設計できるかについて私の心を開いた。 –

関連する問題