Tema: Trigger
Ver Mensaje Individual
  #3 (permalink)  
Antiguo 15/02/2016, 06:39
xPHPerox
 
Fecha de Ingreso: julio-2015
Mensajes: 67
Antigüedad: 8 años, 9 meses
Puntos: 5
Respuesta: Trigger

Cita:
Iniciado por gnzsoloyo Ver Mensaje
En principio, habría que analizar el INSERT que ejecutas para el detalle. Si ese INSERT usa la tabla PRODUCTOS en alguna forma, entonces no puedes utilizarla en este trigger. En caso de no ser eso, hay que revisar todos los SP y triggers que puedan estar involucrados en la operación, ya que puede haber un bloqueo en alguna etapa no visible.
Este tipo de entrecruzamientos de triggers no es tan raro como parece. Si abusas innecesariamente de los TRIGGERs es fácil que aparezcan interbloqueos de difícil diagnóstico. Tienes que tener muy en cuenta que un SELECT en una subconsulta que alimenta un INSERT/UPDATE, o bien un TRIGGER que ejecute una lectura de una tabla cualquiera, genera un bloqueo de escritura en esa tabla.
He estado revisando el INSERT, y no creo que interfiera en la tabla productos, pero es tan raro..no he podido detectar el fallo.

Hago directamente el INSERT en la tabla detalles, introduciendo el id_producto, id_venta, cantidad y precio, por lo que realmente en la tabla productos no se hace nada.

También he eliminado todos los TRIGGERS que tenía creado, he hecho un DROP de la base de datos completa, y tampoco..no sé donde puede estar el error.

Por lo del tema de la lógica, cree una base de datos simple, con 5 tablas únicamente, ya que era para realizar una práctica en la que tengo que crear procedimientos, funciones, triggers, etc.., la verdad es que por eso está mal estructurada, pero como era para algo rápido..

Este trigger en concreto es para realizar un control de campos derivados, por eso lo que quería hacer era que si se realizaba la compra de un producto, haciéndose un INSERT en detalles, después de realizarse, se restara de productos.

Para las pocas líneas que son, está dando muchos problemas..

Gracias por la respuesta, gnzsoloyo, seguiré dándole vueltas a la cabeza. :)