0

私は2つのテーブルを持っています:

table A
 id | level_ID | col_m | col_n

table B
 id | prev_ID | cur_ID

table A新しい挿入と更新が行われるアプリケーション層から操作されます。一方、トリガーを介した列のtable B更新後にのみ値が挿入されます。level_IDtable A

DELIMITER |
DROP TRIGGER IF EXISTS trigger_happy|
CREATE TRIGGER trigger_happy AFTER UPDATE ON table A
FOR EACH ROW
  BEGIN
    IF level_ID!=NEW.level_ID THEN
    INSERT INTO table B (id, cur_ID, prev_ID)
    VALUES (OLD.id, NEW.level_ID, OLD.level_ID)
  END IF;
END;
DELIMITER ;

level_ID問題は、列に変更がある場合にのみトリガーを起動するつもりであることです。他の列の更新であり、トリガーを起動しないcol_mでください。col_n

そのままではうまくいかないので、私のトリガーステートメントを手伝ってください。

編集

列の更新は、アプリケーション ロジック内でさまざまなタイミングで行われます。更新が完了したときにのみトリガーを起動する必要がありlevel_IDます。

4

2 に答える 2

0

簡単に言うと、2 つの更新を実行する必要があります。

1 回の更新では、level_ID 列にトリガーが必要です。2 回目の更新では、関連付けられたトリガーなしで col_m 列と col_n 列が更新されます。

于 2012-03-29T14:09:08.650 に答える