【问题标题】:Trigger creation is not working触发器创建不起作用
【发布时间】:2013-04-02 09:52:00
【问题描述】:
我在 phpmyadmin 上创建触发器时遇到问题。
我有一个像下面这样的简单代码,当我提交代码时,在变量 x 声明的行中返回了一个 sintax 错误。我知道 SELECT 查询有效,因为我已经对其进行了测试,并返回了一个字符串。谁能帮我?提前致谢。
DELIMITER $$
CREATE TRIGGER `after_assigntags_insert` AFTER INSERT ON `assigntags`
FOR EACH ROW
BEGIN
DECLARE x VARCHAR(10);
SET x = (SELECT UltLabel FROM assignlabels WHERE ALmessage=1);
INSERT INTO messages (Message) VALUES (x);
$$
END
DELIMITER ;
【问题讨论】:
标签:
mysql
triggers
phpmyadmin
【解决方案1】:
这是一个语法错误,
END 应该出现在您的分隔符 $$ 之前。
试试这样的:
DELIMITER $$
CREATE TRIGGER `after_assigntags_insert` AFTER INSERT ON `assigntags`
FOR EACH ROW
BEGIN
DECLARE x VARCHAR(10);
SET x = (SELECT UltLabel FROM assignlabels WHERE ALmessage=1);
INSERT INTO messages (Message) VALUES (x);
END
$$
DELIMITER ;
【解决方案2】:
我认为BEGIN 在DECLARE 之后
DELIMITER $$
CREATE TRIGGER `after_assigntags_insert` AFTER INSERT ON `assigntags`
FOR EACH ROW
DECLARE
x VARCHAR(10);
BEGIN
SET x = (SELECT UltLabel FROM assignlabels WHERE ALmessage=1);
INSERT INTO messages (Message) VALUES (x);
$$
END
DELIMITER ;
【解决方案3】:
用user variables怎么样?
DELIMITER $$
CREATE TRIGGER `after_assigntags_insert` AFTER INSERT ON `assigntags`
FOR EACH ROW
BEGIN
SET @x = (SELECT UltLabel FROM assignlabels WHERE ALmessage=1 LIMIT 1);
INSERT INTO messages (Message) VALUES (@x);
$$
END
DELIMITER ;