Mysql 创建触发器-声明变量-无法使触发器工作

Mysql 创建触发器-声明变量-无法使触发器工作,mysql,triggers,Mysql,Triggers,此触发器用于更新“field_csvfilepath_value”以匹配文件表中的“filepath”,下面是一些表的详细信息。但是我不能让它工作,请帮忙 分隔符$$ 创建触发器csv\u filpath 插入内容后,为每行键入导入 开始 声明p varchar80 set p:=从content\u type\u importsv连接文件中选择文件路径,其中NEW.content\u type\u importsv.field\u csv1\u fid=files.fid 设置NEW.fiel

此触发器用于更新“field_csvfilepath_value”以匹配文件表中的“filepath”,下面是一些表的详细信息。但是我不能让它工作,请帮忙

分隔符$$ 创建触发器csv\u filpath 插入内容后,为每行键入导入 开始 声明p varchar80 set p:=从content\u type\u importsv连接文件中选择文件路径,其中NEW.content\u type\u importsv.field\u csv1\u fid=files.fid 设置NEW.field\u csvfilepath\u值=p 结束$$ 定界符; 此触发器正在生成以下错误:

错误代码:1064。您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以了解在第5行的“set p:=SELECT filepath FROM content_type_importsv join files where NEW.conte”附近使用的正确语法

我正在使用mysql workbench 5.2

分隔符$$ 分隔符$$ 创建“内容类型导入”表 `vid`int10无符号非空默认值'0', `nid`int10未签名非空默认值'0', `字段_csv1_fid`int11默认为空, `字段_csv1_列表`tinyint4默认为空, `字段_csv1 _数据`文本, `字段_csvfilepath_值`longtext, 主键'vid', 键'nid``nid` ENGINE=MyISAM默认字符集=utf8$$ 创建表“文件” `fid`int10无符号非空自动增量, `uid`int10无符号非空默认值'0', `filename`varchar255非空默认值, `filepath`varchar255非空默认值, `filemime`varchar255非空默认值, `文件大小'int10未签名非空默认值'0', `状态“int11非空默认值“0”, `时间戳'int10未签名非空默认值'0', 主键'fid', 键'uid``uid`, 键'status`` status`, 键'timestamp``时间戳` 引擎=MyISAM自动增量=55默认字符集=utf8$$
存在一些语法错误:

您列出的是由集合p:=中的:引起的,您应该将其删除 开始和结束$$之间的每一行应以结尾; 您不能更新after触发器中的新行,因此它应该是before触发器
除了代码中的多个语法错误外,您不能更改触发器后插入的行的列值。您应该改用BEFORE事件

也就是说,你的触发器可以归结为一个语句,因此不需要开始。。。结束块和分隔符的更改

创建触发器csv_填充路径 在内容上插入之前\u键入\u导入 每行 设置新的.field\u csvfilepath\u值= 选择文件路径 从文件 式中,fid=新的.field\u csv1\u fid 限制1 ;
这是演示

哇!真漂亮。谢谢