MySQL,phpMyAdmin:插入触发器后未触发

MySQL,phpMyAdmin:插入触发器后未触发,mysql,sql,triggers,phpmyadmin,Mysql,Sql,Triggers,Phpmyadmin,我在phpMyAdmin中的数据库上定义了以下触发器: 这是一个非常简单的触发器,在项目表中插入一条记录之后,我只需将一条记录插入历史表: 但是,触发器没有启动(当我在MySQL Workbench中测试它时,它工作正常) 编辑1: 当我使用一些伪值定义触发器时,触发器将触发,如下所示: insert into history values(null, 1, 1, 1, 1, 1, date(now())) insert into history values(null, new.Id, 1

我在phpMyAdmin中的数据库上定义了以下触发器:

这是一个非常简单的触发器,在项目表中插入一条记录之后,我只需将一条记录插入历史表:

但是,触发器没有启动(当我在MySQL Workbench中测试它时,它工作正常)

编辑1:

当我使用一些伪值定义触发器时,触发器将触发,如下所示:

insert into history values(null, 1, 1, 1, 1, 1, date(now()))
insert into history values(null, new.Id, 1, 1, 1, 1, date(now()))
编辑2:

当我用伪值定义触发器时,历史记录表被写入(请参见编辑1)。但是最近添加的条目的ID是11(ID是自动递增的),即使之前的最后一个条目的ID=3。我的观点是,它们不是连续的,而是好像中间有条目,但由于某种原因被删除了

编辑3:

以下是项目和历史记录表的DDL:

触发器(我认为这是不相关的,因为我没有通过脚本导入触发器,我使用phpMyAdmin的GUI定义了它):

我还发现了另一件事:当我使用Yii web应用程序向item添加一个条目时,该条目在phpMA的item表中是可见的,但触发器不会在history表中插入任何内容。但是,当我直接在phpMA中将条目添加到条目时,触发器也会在历史记录中创建一个条目,即它正常工作

另外,当我用这些伪值定义触发器时,只保留
new.Id
,如下所示:

insert into history values(null, 1, 1, 1, 1, 1, date(now()))
insert into history values(null, new.Id, 1, 1, 1, 1, date(now()))

它也不起作用。这和递增的ID使我得出一个结论:触发器被触发,试图插入历史,但由于某种原因得到了一个无效的
new.ID

值。

最好(IMHO)在insert中列出列,只是让它清楚地知道要插入什么。@NigelRen说得好,但没有区别:)检查是否正在将值的顺序更改为括号。尝试使用首先定义的列设置它<代码>将值(new.Id,new.LocationId,new.LocationId,new.LocationId,new.LocationId,new.PersonId,new.PersonId,date(now())插入历史记录(Id,LocationId,LocationId,PersonId,date)
。当然,有些列的名称应该调整。还有Id列,据我所知,它是自动递增的,可以从insert查询中删除,也可以删除null。@VassilikiM。我试过这样做,但仍然不起作用…在回答第二次编辑时,您看到更高ID的原因是因为您的查询遍历多行(创建自动增量主键),直到插入最后一行。有一个设置可以根据需要锁定自动增量。检查以下链接
insert into history values(null, new.Id, 1, 1, 1, 1, date(now()))