Crear disparador usando la variable de la tabla

Soy relativamente nuevo en los disparadores en MYSQL, lo siento si esto es algo bastante básico que estoy tratando de hacer. Encontré cómo configurar uno que permita una actualización estática, sin embargo, no he visto nada sobre cómo usar uno de los campos de la actualización inicial como una variable dentro de la declaración de activación.

Ejemplo:

Tabla 1, items:

id | name | total_stock
1 | item | 8
2 | item2 | 0

Tabla 2, item_options:

id | item_id | option | stock
1 | 1 | test | 5
2 | 1 | test2 | 3
3 | 2 | test | 0

Si luego actualizo item_options:

UPDATE `item_options` SET `stock`=7 WHERE `id`=1

O inserte un nuevo elemento en item_options:

INSERT INTO `item_options` (`item_id`,`option`,`stock`) VALUES ('2','add','2')

Entonces me gustaría (si es posible) usar un disparador para actualizar el total_stock en la items tabla con la SUMA de stock en la item_options tabla con la misma correspondiente item_id.

Entonces, supongo que mi pregunta tiene dos partes:

  1. ¿Es esto posible?
  2. ¿Puede alguien señalarme en la dirección correcta de cómo hacer esto?

preguntado el 04 de julio de 12 a las 10:07

1 Respuestas

Puedes usar las pseudo filas new or old as descrito aquí.

Debería ser algo así:

CREATE
TRIGGER my_trigger after insert, update
ON item_options FOR EACH ROW 
BEGIN
    update items set total_stock = (select sum(stock) from item_options where item_id = new.item_id) where item_id = new.item_id;
END;

Tenga en cuenta que no lo he probado, pero debería darle una idea general.

Respondido 04 Jul 12, 10:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.