【发布时间】: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文件中。