如何设置mysql多触发器

如何设置mysql多触发器,mysql,sql,triggers,Mysql,Sql,Triggers,如何将这些触发器保持在单个触发器中 我试过了,但我不确定我犯了什么错误 下面是我的扳机 Mysql不支持所有操作的一个触发器,例如SQLServer 在mysql中,您正在以您必须的方式进行操作 如果希望集中代码,可以创建一个过程,并使用新/旧信息和事件标识符(I/U/D)从3个不同触发器调用同一个过程。在您的情况下,正确的解决方案可能取决于您实际已经尝试了什么以及尝试的结果 例如,您可能只需要将您的UPDATE语句包含在BEGIN。。。结束,这就足够了: create trigger C

如何将这些触发器保持在单个触发器中

我试过了,但我不确定我犯了什么错误

下面是我的扳机


  • Mysql不支持所有操作的一个触发器,例如SQLServer

    在mysql中,您正在以您必须的方式进行操作


    如果希望集中代码,可以创建一个过程,并使用新/旧信息和事件标识符(I/U/D)从3个不同触发器调用同一个过程。

    在您的情况下,正确的解决方案可能取决于您实际已经尝试了什么以及尝试的结果

    例如,您可能只需要将您的
    UPDATE
    语句包含在
    BEGIN。。。结束
    ,这就足够了:

    create trigger CombinedDetalleInsertTrigger
    after insert
    on detalle 
    for each row 
    begin
      update ... where id_p=new.id_p;
    
      update ... where new.id_P = producto.id_P;
    
      update ... where new.Folio= factura.folio;
    end;
    
    如中所述

    尽管如此,可能并不总是可以使用分隔符,因为这是一条客户机指令,并且并非所有MySQL客户机都支持它。在这种情况下,您可以尝试以下建议:使用
    allowmultiquerys=true
    连接属性或删除最后的
    (在
    结束
    之后的一个)

    create trigger Aumentar_Existencia
    after insert
    on detalle
    for each row    
    
    update producto set existencia =if( new.activo = 0, producto.existencia +
     new.cantidad,producto.existencia)
    
    where new.id_P = producto.id_P
    
    CREATE TRIGGER aumentar
    AFTER insert
    on detalle
    for each row
    
    update factura set total =
     ( 
         select producto.precio * new.cantidad
        from producto 
        where new.id_p=producto.id_p)
    
     where new.Folio= factura.folio;
    
    create trigger CombinedDetalleInsertTrigger
    after insert
    on detalle 
    for each row 
    begin
      update ... where id_p=new.id_p;
    
      update ... where new.id_P = producto.id_P;
    
      update ... where new.Folio= factura.folio;
    end;
    
    delimiter $$
    
    create trigger CombinedDetalleInsertTrigger
    after insert
    on detalle 
    for each row 
    begin
      update ... where id_p=new.id_p;
    
      update ... where new.id_P = producto.id_P;
    
      update ... where new.Folio= factura.folio;
    end$$
    
    delimiter ;