【问题标题】:MySQL Trigger - After Update Insert Not Triggering InsertMySQL触发器 - 更新插入后未触发插入
【发布时间】:2016-10-13 10:16:57
【问题描述】:

我正在尝试通过在使用 MySQL 从初始表触发更新后将记录插入日志表来记录来自一个表的更新。

我似乎无法获得下面的代码来导致插入发生。

我需要做什么来解决这个问题?

触发码

     CREATE TRIGGER `issueaim_update` AFTER UPDATE ON `issues`
 FOR EACH ROW INSERT INTO issuehistory 
       SELECT 'update', (select max(revision)+1 from issuehistory where issueid = i.issueid), NOW(), '', IssueID, ProjectID, IssueTitle, Criticality, AssignorID, OwnerID, AltOwnerID, ApproverID, AssignedDate, CompletionDate, DueDate, ECD, ClosedDate, IssueStatement, ClosureCriteria, ClosureStatement, RootCause, CorrectiveAction, IssueResolutionVerification, RejectionJustification, NEW.Category1, Category2, Category3, Category4
        FROM ProjectAIM.issues AS i WHERE IssueID = NEW.IssueID and ProjectID = NEW.ProjectID

错误日志 - 最近记录的错误

2016-06-12 21:55:39 10e0 InnoDB:错误:表的表空间 缺少“mysql”。“innodb_table_stats”。

2016-06-12 21:55:39 10e0 InnoDB:错误:获取持久统计信息 请求表“projectaim”。“问题”,但所需的系统 表 mysql.innodb_table_stats 和 mysql.innodb_index_stats 不是 存在或具有意想不到的结构。改为使用瞬态统计信息。

【问题讨论】:

  • 请发布所有创建此触发器的触发器代码。
  • 感谢回复,请看修改后的代码。
  • 好像没有语法错误,在issues插入记录时,这个触发器没有被执行?还有其他错误吗?
  • 我将代码修改为最新版本。当我插入记录时,正在执行我拥有的另一个触发器(用于处理插入的触发器)。当我更新记录时,触发器才会执行失败。至于其他错误,我在浏览器中看不到任何错误,因为这是一个 PHP 应用程序。
  • 检查您的 MySQL 错误日志。您可以在 MySQL 数据目录中找到它,例如 /var/db/mysql/<hostname>.err。实际路径应该在您的my.cnf 文件中。

标签: mysql wamp


【解决方案1】:

我能够按照下面列出的 4 个步骤解决问题。

1) 首先,我将 phpmyadmin 中的表备份为 sql 导入脚本。

2) 按照解决方案链接中的说明,我解决了表空间问题。

3) 然后我再次在 phpmyadmin 中运行 sql 导入脚本/触发器创建脚本来创建、填充表并重新创建我的触发器。

4) 最后,我测试了一个更新并让它将更新的记录插入到日志中。

解决方案链接 - WAMP Solution for TableSpace Issue

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 2017-08-22
    相关资源
    最近更新 更多