Läuft auf dem lokalen phpMyAdmin-Server:
Ich habe zwei Tabellen: user
(有数据)和user_t
(leer).
Sie haben die gleichen Spaltennamen, die gleiche Reihenfolge und den gleichen Typ (user_t
Tabelle hat eine zusätzliche Spalte zum Zeitstempeln der Eingabe).
Ich möchte ein 计划事件
来检查每个用户日志的时间戳
是否具有特定值,如果存在,我想将其复制到user_t
同时从 user
erstellen, um es zu löschen. sehr einfach.
Das Löschen funktioniert einwandfrei. Es ist das INSERT INTO user_t SELECT * FROM user WHERE user.reg < CURRENT_TIMESTAMP - INTERVAL 3 MINUTE;
, das mich in Schwierigkeiten bringt.
Dies ist der Code, den ich zum Erstellen der Veranstaltung verwendet habe:
CREATE EVENT users_u ON SCHEDULE EVERY 1 MINUTE STARTS CURRENT_TIMESTAMP ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO INSERT INTO user_t SELECT * FROM user WHERE user.reg < CURRENT_TIMESTAMP - INTERVAL 3 MINUTE; DELETE FROM user WHERE reg < CURRENT_TIMESTAMP - INTERVAL 3 MINUTE;
Allerdings kommt es immer wieder 空结果
. Also dachte ich, ich mache etwas falsch.
Können Sie mir ernsthaft helfen, diesen Code zum Laufen zu bringen? Schließlich stammt es aus einem Tutorial und sollte in Ordnung sein.
Ich habe versucht, Code zu verwenden und habe sogar darüber nachgedacht, etwas zu recherchieren 事务
, aber es scheint zu umfangreich für diese Art von Operation zu sein.
Nachdem ich mit dem Code von nbk herumgespielt habe, habe ich es endlich herausgefunden und hier ist der Code, der bei mir funktioniert hat (ich habe die Tabellen- und Spaltennamen verallgemeinert, damit sie niemanden irreführen):
DELIMITER $$ CREATE EVENT event_name ON SCHEDULE EVERY 1 MINUTE STARTS CURRENT_TIMESTAMP ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO BEGIN INSERT INTO empty_table (col_name1, col_name2, col_name3, col_name4, col_name5) SELECT col_name1, col_name2, col_name3, col_name4, col_name5 FROM data_table WHERE col_name < CURRENT_TIMESTAMP - INTERVAL 3 MINUTE; DELETE FROM data_table WHERE col_name < CURRENT_TIMESTAMP - INTERVAL 3 MINUTE; END $$ DELIMITER ;
Ich hoffe, es hilft Menschen wie mir in Zukunft. Nochmals vielen Dank nbk für die schnelle Hilfe. Vielen Dank, natürlich ist Ihre Antwort richtig.
你每分钟运行一次事件并想要输入最后三分钟,我不知道你有那么多新插入,或者你需要一个Python脚本或者这样插入一小时 ==>出于测试目的,我将频率设置为 1 分钟...
您仍然应该重写您的事件。
首先,您是否真的想要重复项,也许是
INSERT IGNORE
,如果违反约束,它将输入新行第二,如果你有不止一个语句,你需要一个
BEGIN END