【问题标题】:"After insert on..." trigger syntax error“插入后...”触发语法错误
【发布时间】:2013-11-06 18:39:18
【问题描述】:
create trigger nuevaVenta
after insert on Compra
if new.idProducto = Productos_Farmaceuticos.idProducto
        set Productos_Farmaceuticos.inventario = Productos_Farmaceuticos.invetario - new.cantProducto;

我正在尝试在完成新的销售后更新库存件数,这是我的表格:

Paciente: idPaciente, nombre
Compra: idProducto, idPaciente, fecha, cantProduct
Productos_Farmaceuticos: idProducto, nombreProduct, precioProduct, puntoReorden, inventario

这是一个没有显示语法错误的更新:

delimiter //
create trigger nuevaVenta
after insert on medapp.Compra
for each row
begin
    if new.idProducto = Productos_Farmaceuticos.idProducto then
        update medapp.Productos_Farmaceuticos
        set Productos_Farmaceuticos.inventario = 
            Productos_Farmaceuticos.invetario - new.cantProduct;
    end if;
end; //
delimiter ;

但当我尝试在 Compra 中插入内容时,它现在显示“错误代码 1109:字段列表中的未知表 'Productos_Farmaceuticos'”

【问题讨论】:

  • 它只是说“Compra 附近的 SQL 语法错误...”
  • 你有两次on compra。尝试删除第一个。见这里:dev.mysql.com/doc/refman/5.0/en/trigger-syntax.html
  • 改变了,现在错误是“'if new.idProducto...'附近的SQL语法”
  • 执行 select * from Productos_Farmaceuticos 如果您遇到同样的错误。这可能是区分大小写的问题。
  • 它显示“select * from Productos_Farmaceuticos”没有错误

标签: mysql sql triggers mysql-workbench


【解决方案1】:

我认为这行有错误:

end; //

您已将分隔符更改为“//”。因此,这一行应该简单地阅读:

end //

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 2015-08-16
    • 1970-01-01
    相关资源
    最近更新 更多