我希望在我的某个表格中插入时转换字段。
检查& 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 :(得分: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;
...
答案 1 :(得分:0)
...
SET @magazine_name := REPLACE(FieldName,'&','and');
SET @magazine_name := REPLACE(FieldName,"'",'');
...
何时或何处定义变量:FieldName?
您还应该检查逻辑。例如,@magazine_name
是9.4. User-Defined Variables和magazine_name VARCHAR(100)
一个13.6.4.1. Local Variable DECLARE Syntax,是不同的变量。
在这种情况下,它会将NULL
分配给列perma_link
,因为它是magazine_name
(从未分配)的值,正在为变量分配@magazine_name