0

当我的一个表中发生插入时,我想转换一个字段。

检查和 ged 的​​ => 检查和 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

如果有人知道这件事。请帮我

提前致谢

4

2 回答 2

1

您需要将变量更改FieldName为要在其上运行函数 REPLACE 的列的名称(在本例中为 column name 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;
...
于 2013-08-27T12:34:53.337 回答
0

使用13.7.4。设置语法

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

何时何地定义变量:FieldName?

您还应该检查逻辑。例如@magazine_name9.4。用户定义的变量magazine_name VARCHAR(100)一个13.6.4.1。局部变量 DECLARE 语法,是不同的变量。

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

于 2013-08-27T12:28:27.917 回答