gpt4 book ai didi

MySQL 事件调度程序

转载 作者:行者123 更新时间:2023-11-29 17:12:11 25 4
gpt4 key购买 nike

我设置了 1 个 mysql 事件,每 12 小时将带有 0 标志的所有数据从一个表传输到另一个表(表 2),然后更新查询以设置为 1传输后的标志。 INSERTUPDATE 位于一个事件进程中。

我的问题是,所有传输的数据在表 2 上都有重复,看起来 2 个事件正在运行。

有什么想法吗?

这是我的事件代码:

DELIMITER |CREATE    EVENT    IF NOT EXISTS    event_transfer    ON SCHEDULE EVERY 12 HOUR    STARTS '2018-08-10 06:00:00'    ON COMPLETION NOT PRESERVE    ENABLE

DO

BEGIN


INSERT INTO dbsample.tblmirror (Column1, Column2, Column3)
(SELECT Column1, Column2, Column3
FROM tblmaster
WHERE is_transfer = 0);

UPDATE dbsample.tblmaster
SET is_transfer = 1
WHERE is_transfer = 0;


END |

DELIMITER;

最佳答案

引用P.Salmon:

No duplicate event, simple code, no triggers - I doubt that the problem lies here at all.

P.Salmon 就在这里,如果你能弄清楚还有什么工作在做这件事,那就太好了。
但是,您也可以通过其他方式避免此问题。既然您不想有重复项,那么有一种方法可以检测重复项,对吧?不管怎样,这 3 列的组合必须是唯一的,或者其他什么,然后在您的数据库中指出这一点。

在列上创建唯一索引(或主键),使每行都唯一。

然后,您不再执行简单的INSERT,而是执行INSERT IGNORE,瞧,您将不再有重复项。

引用manual :

If you use the IGNORE modifier, errors that occur while executing the INSERT statement are ignored. For example, without IGNORE, a row that duplicates an existing UNIQUE index or PRIMARY KEY value in the table causes a duplicate-key error and the statement is aborted. With IGNORE, the row is discarded and no error occurs. Ignored errors may generate warnings instead, although duplicate-key errors do not.

关于MySQL 事件调度程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51820685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com