【问题标题】:Is there a way to run exception code in mysql有没有办法在mysql中运行异常代码
【发布时间】:2023-04-09 03:26:01
【问题描述】:

假设我运行一个查询,将标记为要复制的 100 条记录(共 200 条)复制到一个临时表中,然后将该临时表的内容复制到另一个表中,现在在此查询期间,100 条记录之一导致主键冲突

现在,如果发生这种情况,我想运行另一个查询,该查询将条目添加到错误日志表中,并删除其中可能已从临时表复制的所有数据并清除临时表本身

我想知道我是否可以在 MySQL 中引发异常,以便它可以运行我的备用代码

注意:我不想使用事务,因为它会锁定表,并且我有其他同时运行的查询需要读/写第一个表(它们不会触及已标记为的记录复制感谢一个表明它们已被标记的标志)

【问题讨论】:

    标签: mysql exception exception-handling


    【解决方案1】:

    如果仅在 SQL 中编写,您将需要使用退出 handler!该页面上有一个重复的密钥违规示例。处理程序只能在存储过程中使用,但要将事件记录到表中,无论如何您都需要使用过程。您将为要复制的每条记录调用一个存储过程。然后,如果其中一个失败,则将一条记录插入到日志表中,其中可能包含导致违规的 id。

    然而,这比让应用程序读取潜在的 MySQL 错误并将其写入日志文件效率低,因为您可以使用批量 INSERT 到临时表中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多