phpMyAdmin触发器出现“未使用表”错误

phpMyAdmin触发器出现“未使用表”错误,php,mysql,wordpress,triggers,Php,Mysql,Wordpress,Triggers,我正在使用Wordpress 4.3.1上名为Event Manager的插件创建事件日历。事件通过Wordpress上的页面添加,每个事件的数据存储在Wordpress MySQL数据库中名为wp_em_Events的表中。在输入事件信息的页面上,我添加了一个要选择的城市列表,它们是Wordpress类别。这些用于为每个城市创建活动日历。例如,我使用此短代码为波士顿的事件创建日历页:[events\u calendar full=1 category=Boston] 我希望将类别名称包含在存储

我正在使用Wordpress 4.3.1上名为Event Manager的插件创建事件日历。事件通过Wordpress上的页面添加,每个事件的数据存储在Wordpress MySQL数据库中名为wp_em_Events的表中。在输入事件信息的页面上,我添加了一个要选择的城市列表,它们是Wordpress类别。这些用于为每个城市创建活动日历。例如,我使用此短代码为波士顿的事件创建日历页:[events\u calendar full=1 category=Boston]

我希望将类别名称包含在存储所有其他事件信息的表中,以便我可以按城市查询此表

我正在phpMyAdmin中处理一个触发器,以将类别名称添加到wp_em_events表中。找到类别名称有点费解,但其工作原理如下:

在wp_em_事件表中,每个新事件都有一个post_id

wp_em_事件表中的post_id与wp_term_relationships表中的object_id匹配

wp_term_relationships表中的term_taxonomy_id与wp_term_taxonomy表中的term_id匹配

wp_term_分类法中的term_id与wp_terms表中的term_id匹配。wp_术语还包含变量“name”,即类别的名称,例如Boston

换言之:

wp_em_events.post_id=wp_term_relationship.object_id

wp\u term\u relationship.term\u taxonomy\u id=wp\u term\u taxonomy.term\u id

wp_terms_taxonomy.term_id=wp_terms.term_id

因此,我在wp_em_events中创建了一个名为“chapter”的新字段。如果我使用此sql代码,我可以将类别名称添加到chapter:

UPDATE wp_em_events
LEFT JOIN wp_term_relationships on (wp_em_events.post_id = wp_term_relationships.object_id)
LEFT JOIN wp_term_taxonomy on (wp_term_relationships.term_taxonomy_id=wp_term_taxonomy.term_taxonomy_id) 
LEFT JOIN wp_terms on (wp_term_taxonomy.term_id=wp_terms.term_id) 
SET wp_em_events.chapter = wp_terms.name;
我想设置一个触发器,每次在wp_em_事件中插入新行时,将wp_terms.name插入wp_em_events.chapter。我使用以下代码创建了触发器:

DROP TRIGGER IF EXISTS `test`;
CREATE DEFINER=`wordpressuser202`@`localhost` TRIGGER `test` 
BEFORE INSERT ON `wp_em_events` 
FOR EACH ROW 
BEGIN 
UPDATE wp_em_events 
LEFT JOIN wp_term_relationships on (NEW.post_id = wp_term_relationships.object_id) 
LEFT JOIN wp_term_taxonomy on (wp_term_relationships.term_taxonomy_id=wp_term_taxonomy.term_taxonomy_id) 
LEFT JOIN wp_terms on (wp_term_taxonomy.term_id=wp_terms.term_id) 
SET NEW.chapter = wp_terms.name; 
END
UPDATE语句中唯一的区别是我更改了wp_em_事件。到新的。所以post_id和chapter指的是要插入的新行的列。但是,当我插入新记录时,会出现一个错误:

1096–未使用任何表格
如何解决这个问题?

触发器的第一个问题是它试图更新wp\u em\u事件中的所有行。第二个问题是,您不能在触发器中引用同一个表,但是您使用了一种出人意料的奇怪方式,以至于抛出的错误显然不是正在发生的实际错误。只需设置NEW.col1=从t2中选择t2.col2,然后在。。。式中,t3.col3=NEW.col4;是做你想做的事的方法。。。不更新。。。准备好了,明白了!谢谢你的帮助。每行的默认值是添加到语法中的默认phpMyAdmin。无论如何,这里是新的SQL代码的工作!再次感谢您的帮助。SET NEW.chapter=从wp\u terms中选择wp\u terms.name在wp\u term\u分类法上左连接wp\u term\u分类法。term\u id=wp\u terms.term\u id左连接wp\u term\u关系在wp\u term\u关系上左连接wp\u term\u关系。term\u分类法\u id在wp\u term\u关系中。object\u id=NEW.post\u我很高兴您解决了它,但对于每一行,我都不知道他指的是。这部分意味着它是一个基于行的触发器。