2013-08-27 31 views
0

我想在插入发生在我的表之一时转换字段。mysql触发器显示错误

检查& ged's =>检查和geds。

DELIMITER $$ 
    CREATE 
    TRIGGER `perma_limk_insertion` AFTER INSERT 
    ON `tbl_magazine` 
    FOR EACH ROW BEGIN 

    DECLARE magazine_name VARCHAR(100); 
    @magazine_name := REPLACE(FieldName,'&','and'); 
    @magazine_name := REPLACE(FieldName,"'",''); 
    UPDATE tbl_magazine SET perma_link = magazine_name WHERE MAGAZINE_ID = NEW.MAGAZINE_ID; 
    END$$ 
    DELIMITER ; 

这是我的触发器。但我得到一个错误,

#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 '@magazine_name := REPLACE(FieldName,'&','and'); @magazine_name := REPLA' at line 7 

如果任何人知道这一点。请帮我

在此先感谢

回答

0

使用13.7.4. SET Syntax

... 
SET @magazine_name := REPLACE(FieldName,'&','and'); 
SET @magazine_name := REPLACE(FieldName,"'",''); 
... 

何时或何处定义变量:FieldName?

您还应该检查逻辑。例如@magazine_name9.4. User-Defined Variablesmagazine_name VARCHAR(100)一个13.6.4.1. Local Variable DECLARE Syntax,是不同的变量。

在这种情况下,它将为列perma_link分配NULL,因为它的值是magazine_name(从未分配过),该变量正在分配@magazine_name

1

您需要将变量FieldName更改为要运行函数REPLACE的列的名称(本例中为列名perma_link)。

您的代码将是:

... 
@magazine_name := REPLACE(perma_link,'&','and'); 
@magazine_name := REPLACE(perma_link,"'",''); 
UPDATE tbl_magazine SET perma_link = magazine_name WHERE MAGAZINE_ID = NEW.MAGAZINE_ID; 
...