我正在尝试创建一个触发器来将我的表列连接到一个列但我无法找到错误。
码
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行
答案 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次。这不是你想要做的事情:))