0
を置き換えますそのグループのこれらの列と別のカテゴリといくつかのカテゴリ:は、私は次のシナリオを持っているnew.id
id, mykey, source_cat_id, destiny_cat_id
source_cat_id
列はカンマでIDを分離保管VARCHAR
です。
if(new.category_id in
(select source_cat_id from cat_eq where clave = 'man'))
then
set new.category_id:=(select destiny_cat_id from cat_eq where clave = 'man');
:例えば:私は
product_category
テーブルチェックに挿入する前に
new.category_id
は、例えば、いくつかの
にmykeyを与え
SELECT
を行うとき、その結果セット内にある場合にトリガーを作成する必要があり12,25
cat_eqに複数の値がある場合、id_categoryがcat_eqのテーブル行の最初の位置にある場合にのみトリガーが機能するとします(12,15)。私が取得したい何
はウィッヒがトリガーで[OK]を動作しますが、これと同等です:
if(new.category_id in (12,25))
then
set new.category_id:=(select destiny_cat_id from cat_eq where clave = 'man');
はどうすればこれを行うことができますか? ありがとう!
あなたがする必要がある最初の事はあなたのデータモデルを修正しています。決してコンマで区切られたリスト(受信レコードを処理するステージングテーブルを除く)を格納する必要はありません。これは関連するテーブルでなければなりません。 – HLGEM
@HLGEM理論的には素晴らしいですが、しばしば実用的ではありません。たとえば、CMSは、最適でない場合でも、開発者を特定のスキーマにロックしています。 – cwallenpoole
'FIND_IN_SET()'は、悪いデザインの良い機能です。 –