2

記事データベースのフィールドがほとんどない単純なDBテーブルがあります。その中には、記事に対して行われた最後の更新の時刻を含むTimeStampがあります。

「ONUPDATECURRENT_TIMESTAMP」を使用します

問題は、このレコードのすべてではなく、一部のフィールドが変更された場合にのみ更新したいということです。

つまり、記事ごとに、訪問者が記事を読んだ回数を示すフィールドがあります。Webにアクセスするたびに更新しないでください...タイトル、作成者などを変更した場合のみ...

理想的には素晴らしいmysqlコマンドで...


私は以下をコーディングしました:

CREATE TRIGGER `actu_lastupdate_date` BEFORE UPDATE ON `actuality`
 FOR EACH ROW BEGIN
    if NEW.title <> OLD.title OR NEW.chapeau = OLD.chapeau OR NEW.content = OLD.content
    then
        SET NEW.LastUpdate_date = current_timestamp;
    end if;
END

別のレコードフィールドが変更されている場合でも、タイムスタンプが更新されているようです。どこかに悪いことがあるはずです。調べてみます

4

1 に答える 1

2

更新時にタイムスタンプを追加するトリガーを作成できます

delimiter |
CREATE TRIGGER actu_lastupdate_date AFTER UPDATE on actuality
FOR EACH ROW
BEGIN
    if (NEW.title <> OLD.title 
         OR NEW.chapeau <> OLD.chapeau 
         OR NEW.content <> OLD.content)
        AND (NEW.other_column = OLD.other_column 
         OR NEW.other_column2 = OLD.other_column2)
    then
        SET NEW.LastUpdate_date = current_timestamp;
    end if;
END
|
delimiter ;
于 2012-11-26T13:47:52.510 に答える