2017-11-06 13 views
1

後述のように、私は2つのテーブルを持っている上で実行するにはどうすればよい、私は、タイムスタンプと私のmonitorテーブルを更新するトリガを作成したいと考えたときに、関連する投稿のpost_status = 'draft'。しかし、私は2つの問題があります:は、私はMySQLでトリガーを作成し、conditons

私は(以下も)クエリを作成しましたが、私は5行目(更新コマンドがあるところ)にエラーを返すようです。

2番目の問題は、対応するpost_idmonitorテーブルに見つからない場合、MySQLがどのように処理するかです。

表(S):

posts 
- id 
- name 
- post_status 

monitor 
- id 
- post_id 
- last_checked 

MySQLのトリガー

CREATE TRIGGER update_tracker AFTER UPDATE ON posts 
FOR EACH ROW 
BEGIN 
IF NEW.post_status = 'draft' THEN 
    UPDATE monitor SET last_checked = NOW() WHERE post_id = UPDATE.id; 
END IF; 
END; 

SQL Fiddle

+1

トリガーを定義するときに 'DELIMTER'を変更することを忘れないでください。 – tadman

答えて

0

それはを参照するためにあなたが予定のものをUPDATE.id明確ではないのですが、私はあなたがNEW.idを意味推測であり、これはこのトリガーを生成した行のid列。

現在のトリガーを生成した行のすべての列は、NEW.<column>構文で参照されます。

UPDATEが01​​テーブル内の行に一致しない場合、効果はありません。ゼロ行に一致する条件でUPDATEを実行した場合とまったく同じです。

関連する問題