1

我正在尝试在 phpMyAdmin 中创建一个触发器,我可以在其中根据字段名称在插入字段时修改字段的值。我正在使用这种语法

CREATE TRIGGER lawyers AFTER INSERT ON wp_posts
FOR EACH ROW
BEGIN
UPDATE wp_posts SET post_content = '<!--:en-->&nbsp;<!--:--><!--:ES-->&nbsp;<!--:-->'      
WHERE ID = NEW.ID AND post_type = 'lawyers';
END

但我不能让它工作,它说:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4

你能帮我么?

4

1 回答 1

2

无论如何,您都不能编写这样的触发器,更新您要插入的同一个表。当我测试你的触发器时,我得到了这个:

ERROR 1442 (HY000): Can't update table 'wp_posts' in stored function/trigger
because it is already used by statement which invoked this stored 
function/trigger.

以下应该与您的触发器执行相同的操作:

CREATE TRIGGER lawyers BEFORE INSERT ON wp_posts
FOR EACH ROW
BEGIN
 IF (NEW.post_type = 'lawyers') THEN
  SET NEW.post_content = '<!--:en-->&nbsp;<!--:--><!--:ES-->&nbsp;<!--:-->';
 END IF;
END

答:如果您使用 CREATE TRIGGER 或 CREATE PROCEDURE,phpMyAdmin 需要特殊模式。

  • 在 SQL 查询框下方,有一个标记为Delimiter的小表单字段。将此设置为$$

  • 输入您的 CREATE TRIGGER 语句并$$在最后一个END.

  • 单击“开始”按钮。

http://wiki.phpmyadmin.net/pma/Trigger

这类似于在 mysql 命令行客户端中使用DELIMITER内置命令。

于 2013-07-31T18:25:57.500 回答