web-dev-qa-db-ja.com

別のmysql列を編集して、別のmysql列を更新する

特定のフィールドに変更があった場合にのみ、現在の時刻で自動的に更新される日時フィールドを作成しようとしています。

構文エラーがあるようです。 last_progress_dateprogress_percentageが更新/編集されました:

CREATE OR ALTER TRIGGER last_progress_date
ON wp_task_mgr
AFTER UPDATE  
AS BEGIN
   IF UPDATE (progress_percentage)
   SET last_progress_date = GETDATE()
END
3
mesqueeb

コードは有効なMysqlコードのように見えません:

  1. ALTERは有効なオプションではありません
  2. MysqlにASはありません
  3. IF UPDATE(column)
  4. 最後に、BEFOREではなくAFTERトリガーで変更されているレコードの値を変更できます。

あなたは何かが必要です

drop trigger if exists last_progress_date;
delimiter // 
CREATE TRIGGER last_progress_date BEFORE UPDATE ON wp_task_mgr 
FOR EACH ROW     
BEGIN
   --assuming progress_percentage is not nullable; if it is, the condition 
   -- needs to be modified to properly handle NULL values
   IF (NEW.progress_percentage != OLD.progress_percentage) 
   THEN
       SET NEW.last_progress_date = GETDATE();
   END IF;
END;
//
DELIMITER ;
7
a1ex07