问题标签 [mysql-event]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
485 浏览

mysql - 10分钟后触发(MySql)

我有main如图所示的表格。用户可以在此表中添加新内容。我想要一个触发事件:

在新行添加到后 10 分钟运行main

得到name_id那个新的name

我现在需要 aMySql Event而不是 atrigger因为我想等 10 分钟。但是我不明白我将如何为特定行而不是整个表触发这个新事件。谢谢。

0 投票
2 回答
532 浏览

mysql - MySQL/MariaDB 事件优化数据库表

我有兴趣创建一个定期事件来每晚优化我的数据库表。

我得SELECT Concat('OPTIMIZE TABLE ', TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='database_name';。如何在 MySQL 事件中执行每一行?

我更喜欢使用 MySQL / MariaDB 事件并且不涉及 bash。谢谢!

0 投票
1 回答
1427 浏览

mysql - 您将如何使 MySQL 记录以到期时间为精度到期(或更新)?

去年,我正在为大学开展一个项目,其中一个功能需要数据库中的记录以几乎秒级的精度到期(即创建后恰好 x 分钟/小时)。我说“几乎”是因为几秒钟对我来说可能并不意味着世界末日,尽管我可以想象在拍卖网站之类的地方,这可能很重要(我相信这些类型的网站使用不同的措施,但仅作为示例)。

我对 MySQL 事件进行了研究并最终使用了它们,尽管现在我回想起来我想知道是否有更好的方法来做我所做的事情(这并不是那么精确或高效)。我可以想到三种方法使用事件来实现这一点 - 我想知道这些方法是否有效且高效,或者是否有更好的方法:

  1. 安排一个事件每秒运行一次并更新过期记录。我想随着记录数量的增加并且执行时间超过一秒,这会导致问题,甚至可能会干扰正常的数据库操作。如我错了请纠正我。

  2. 安排每半小时左右运行一次的事件(实际上可以是任何时间间隔),更新过期记录。同时,在查询数据库时强加选择标准,只返回过期日期尚未过去的记录,这样自上次事件执行后过期的任何记录都不会被检索到。虽然这在检索时是准确的,但它首先破坏了事件的目的,并且我认为额外的选择标准会减慢选择查询的速度。在我去年的项目中,我使用了这种方法,更新记录的事件实际上仅用于后端日志记录。

  3. 在插入时,有一个触发器来创建特定于记录的动态事件,该事件将在它应该到期的时候准确地到期。到期后,删除该事件。我觉得这将是一个很好的方法,但我不太确定一次运行这么多事件是否会影响数据库的性能(想象一个每小时甚至有 60 次插入的数据库 - 那是 60事件全部同时运行仅一小时。随着时间的推移,这取决于到期时间的长短,这会加起来)。

我确信有更多的方法可以做到这一点——也许使用在 RDBMS 外部运行的单独脚本是一种选择——但这些是我正在考虑的。如果有人对您如何精确地使记录过期有任何见解,请告诉我。

此外,尽管事实上我过去确实使用过它,但我不太喜欢方法 2,因为虽然这适用于记录过期,但如果不是在准确的时间过期记录,它并没有真正帮助我,我想让它在某个时间激活(即博客站点中的预定帖子)。因此,出于这个原因,如果您有一种方法可以在准确的时间更新记录,无论该更新做什么(过期或发布),我都会很高兴听到它。

0 投票
1 回答
465 浏览

mysql - 1小时后如何将MySQL中的列值设置为某个值后重置?

嗨,我对 MySQL 事件和触发器很陌生,我有一个名为userstatus (userid, timestamp, count, flag) 的表,用于存储有关用户是否被阻止的数据。当计数达到 4 时,标志变为 0(阻塞)。你能帮我看看我能做些什么来在它被阻止一个小时后自动将标志重置为 1。我尝试了以下代码:

这似乎有效,但效率不高。任何帮助,将不胜感激。谢谢!

0 投票
2 回答
3586 浏览

mysql - 在 MySQL 中创建计划事件

我在名为fouras 的MySQL 数据库中提供了一个表名:

现在,我想定期检查报价是否已过期(end_date > 今天),因为我正在尝试使用 MySQL 预定事件:

但是当我尝试添加这个事件时 MySQL 会抛出一个错误:

0 投票
0 回答
8921 浏览

mysql - 如何在 MySQL Workbench 中创建事件

我在 MySQL 工作台中创建触发器时遇到问题。我阅读了这篇使用触发器的帖子,发现工作台的 UI 界面中没有任何事件部分,但我们可以在工作分支中编写事件 SQL 查询。

我写了它并运行它,但它没有运行。当我举办演出活动时;列表中没有任何事件。

我该如何解决?

0 投票
2 回答
83 浏览

mysql - 为什么使用复合语句创建 EVENT 时会出现此错误?

从这个 SO question。我对DELIMITER. 我还尝试了以下方法:

这让我像提到的问题一样出错:

错误代码:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 5 行的 '' 附近使用正确的语法。

如果我运行以下 sql:

这工作并EVENT成功创建了一个新的。

这两个 sql 之间的唯一区别是最后一个 used DELIMITER,所以我的问题是为什么DELIMITER在这里工作。谁能给我解释一下?

任何帮助表示赞赏并提前感谢。

0 投票
1 回答
62 浏览

mysql - 每天以 i 小时的间隔为特定时间段创建 MySql 事件调度时出错

每天以 1 小时的间隔为特定时间段创建 MySql 事件调度时出错。

我的代码是



错误是:

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 8 行的“end if”附近使用正确的语法

0 投票
2 回答
6490 浏览

mysql - 我怎样才能让 MySQL 记录计划的事件?

我创建了一个Event,但不知道如何记录它何时运行、需要多长时间以及是否有任何错误。我该怎么做呢?

0 投票
1 回答
467 浏览

mysql - 我可以避免同时运行两个 MySQL 事件吗?

我在 MySQL 中有一个事件,我想至少每 30 秒频繁运行一次。

它正在处理包含最近更新记录的队列表中的数据。有时我会收到大量更新。发生这种情况时,事件的运行时间可能比通常的 2-3 秒长。如果它在下一个计划时仍在运行,我希望下一个事件跳过执行。

我能想到的最好方法是创建一个“状态”表,在该表中我在进程开始时将特定键设置为 1,在完成时将其设置回 0。然后我会更改事件以检查当前状态。

我宁愿做一些比这更好的事情。有没有我完全缺少的功能?

我研究了全局变量,但根据文档,这些似乎只允许用于系统变量。

当前示例代码

这是我目前正在测试的示例代码。

表锁定

根据评论,我想解释为什么我不使用表锁。我对表锁的经验是有限的,所以我希望以下内容是正确且有意义的。

源数据表

我有通知队列表中的更新的触发器。这些是我的源数据表,我从中读取数据以进行处理。

我的理解是,READ对这些表的锁定不会锁定刚刚读取的任何其他事件。如果我要使用WRITE锁,我会阻止对我当前不访问的任何行的任何更新。

目标数据表

我有多个数据源来处理不同事件中的数据。这些将在目标表中修改的行。可能有两个不同的事件同时运行写入同一个表,所以我不想人为地阻塞目标表

其他表

我可以创建一个假表,我只是为了设置然后检查锁的存在而拥有它。这似乎很荒谬,我宁愿创建一个带有我每次查询lock_key的列的单个表锁。is_locked