2013-06-19 51 views
0

我正在开发一个项目,为了帮助加快我在项目中的工作速度,我不得不对表进行一些更改,为了加快速度,我必须对表进行一些更改。我试图创建下面的触发器,但它不起作用,只是给我标准#1064,你的语法错误中有一个错误。MySQL如何创建一个从另一个表中选择的触发器?

create trigger _wc_insert_trigger before insert on widget_components 
    set new.component_id = (select id from components c where c.part_no=new.part_no) 

我以前从来没有使用过触发器,但我并不真正了解从Google响应中得到的所有信息。我试图创建下面的触发器,但它不起作用,只是给我标准#1064,你的语法错误中有一个错误。

关于如何让这样的东西工作的任何想法?我没有预算去重构现有的应用程序以考虑到这一变化。

回答

1
delimiter | 
create trigger wc_insert_trigger before insert on widget_components 
FOR EACH ROW BEGIN 
    set new.component_id = (select id 
          from components c 
          where c.part_no=new.part_no); 
END 
| 
delimiter ; 
+0

如果我在FOR EACH ROW之后添加BEGIN,这将起作用。你能解释为什么吗? –

+0

@JimP:我忘了添加它。纠正了这一点。 –

相关问题