无法创建插入concat值的触发器

时间:2014-12-09 12:25:21

标签: mysql triggers concat

我正在尝试创建一个触发器来将我的表列连接到一个列但我无法找到错误。

create trigger molecule_trigger After insert on molecule
For each row 
begin

Update molecule
Set molecule_text= CONCAT(mid,',',ULCHEm_ID,',',IUPAC_name,',',Inchi,',',inchi_key,',',smiles,',',can_smiles,',',Molecular_formula,',',Molecular_weight,',',vendor,',',CAS,',',links,',',image); 
end;
  

错误:   #1064 - 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获得正确的语法   靠近''在第6行

1 个答案:

答案 0 :(得分:1)

您收到此错误,因为您使用begin启动了“多个语句”块,但;语句后update终止了create trigger语句{ {1}}陈述 您必须更改分隔符

end;

或者您删除了DELIMITER $$ create trigger molecule_trigger After insert on molecule For each row begin Update molecule Set molecule_text= CONCAT(mid,',',ULCHEm_ID,',',IUPAC_name,',',Inchi,',',inchi_key,',',smiles,',',can_smiles,',',Molecular_formula,',',Molecular_weight,',',vendor,',',CAS,',',links,',',image); end $$ DELIMITER ; begin

end

现在,您还有另一个问题。您试图在触发器工作的同一个表上的触发器中执行操作。这是不允许的。将您的触发器更改为:

create trigger molecule_trigger After insert on molecule
For each row 
Update molecule
Set molecule_text= CONCAT(mid,',',ULCHEm_ID,',',IUPAC_name,',',Inchi,',',inchi_key,',',smiles,',',can_smiles,',',Molecular_formula,',',Molecular_weight,',',vendor,',',CAS,',',links,',',image); 

但请注意,这仅为插入的列设置了molecular_text。每次插入行时,您的触发器都会更新整个表格。如果在一个语句中插入3行,则表格会更新3次。这不是你想要做的事情:))