0

データベースにトリガーを作成する必要があります。トリガーは、挿入前にイベントを分析できる必要があります。データベースにすでに存在する最後のイベントが同じステータスの場合、トリガーは挿入をキャンセルし、最後のイベントを更新する必要があります。

作成しようとしましたが、mysql エラーのためにデータベースに追加できません:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5 

ここでトリガー:

CREATE TRIGGER events_before_insert
BEFORE INSERT ON monitoringV2.events
FOR EACH ROW
BEGIN
DECLARE id_last_event;
DECLARE status_last_event;

SELECT id INTO id_last_event, status INTO status_last_event FROM events WHERE module_id=NEW.module_id ORDER BY serverDate DESC LIMIT 1;

IF NEW.status = status_last_event THEN
UPDATE events SET serverDate=NOW() WHERE id=id_last_event;
signal sqlstate '00000' set message_text = "Update instead of insert";
END IF;
END;

情報サーバーは次のとおりです。

PHP 5.4.6 VC9
Apache 2.4.2 VC9
MySQL 5.5.27
PhpMyAdmin 3.5.2.2

ご協力いただきありがとうございます

よろしく、

ドリーヌ M.

4

3 に答える 3

0

このようなトリガーを作成する前に DELIMITER を変更する必要があります

DELIMITER $$
CREATE TRIGGER... 
...
END;
$$
DELIMITER ;
于 2013-02-15T10:34:43.783 に答える
0

このためのトリガーを実装する必要はないかもしれません。あなたが説明している操作は、正式にはUPSERT、つまり更新または挿入として知られています。

これはMySQLでの方法であり、 REPLACEを見ることもできます。

これをカバーする別の質問があります

于 2013-02-15T10:35:06.410 に答える
0

create ステートメントを区切る必要があります。

delimiter //
CREATE...
...
END;
//
DELIMITER ;

おそらく、宣言された各変数の型を定義する必要があります。

DECLARE x INT;

于 2013-02-15T10:40:40.570 に答える