关于mysql触发器根据条件查询更新的问题!

a表

 id (key)
deviceid
devicename
brand 

b表

  id (key)
deviceid(key)联合主键
devicename (默认值0)
brand (默认值0)

请问如何才能做到到b表中deviceid插入数据时(后),查询a.deviceid 如果a.deviceid=b.deviceid则更新b.devicename and b.brand
我的写法是

BEGIN
UPDATE b SET 
devicename = new.devicename,
brand = new.brand
WHERE deviceid  = (SELECT deviceid FROM a WHERE  brand = new.brand and devicename = new.devicename and brand = new.brand );
end

但是这样写的话给b表插入数据后报错,所以请问各位大牛改如何修改才能达到目的?

我190C币,你来回答!****

子查询查出来的是一组数据
你用=不合适
应该是用in
where deviceid IN ()

楼主写的触发器 与文字表述怎么不一致? 怎么没有逻辑判断直接就修改了? ;楼主说的‘’deviceid插入数据时(后)‘是修改操作还是insert操作? ’ 因为insert没有OLD值的,楼主别想了 。我先按你是update deviceid的来 按after update 触发器说:


BEGIN
    IF((SELECT deviceid FROM a WHERE deviceid=NEW.deviceid)==NUll)
          UPDATE b SET 
                 devicename = OLD.devicename,
                 brand = OLD.brand
                WHERE deviceid  =NEW.deviceid;
            ELSE   //什么都不做  就代表更新了值
            end if;

end

基本意思应该是这样,具体的楼主自己改了!

触发器中不能用update,直接用set devicename=new.xxxxx 另外,触发事件要选before