Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/03/2015, 13:44
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Trigger After Insert con Update y Where condición

Estás confundiendo la sintaxis de SQL con la de PHP, omitiendo los terminadores de sentencia, y además ni siquiera respetas la sintaxis del UPDATE....
Es evidente que te disparará errores de sintaxis.

Mira:
1) Los operadores lógicos en SQL son contextuales, por lo que no existe el "==" para comparar un valor contra un campo. Es el "=". Lo mismo que para la asignación, no hay diferenciación sintáctica del uso, sino contextual.
2) Toda sentencia en una rutina almacenada termina igual que en cualquier otra circunstancia: con ";", y no lo estás poniendo al final del UPDATE.
3) La sintaxis de una sentencia SQL es estricta: El WHERE no puede estar antes del SET, lo mismo que en el SELECT no podría estar antes del FROM. Eso es un error elemental.
4) Si "Vendido" es una palabra, debe ir como cadena de texto, con apóstrofos.
5) Cuando quieras comparar el estado de algo contra NULL, se usa IS NULL o IS NOT NULL. Poner solamente NOT NULL no significa nada, se usa en la definición de columnas en el CREATE TABLE, nada más, y disparará un error de sintaxis.

Todo esto, mas allá de que estás complicando innecesariamente la sintaxis...

Código MySQL:
Ver original
  1. DROP TRIGGER IF EXISTS `ai_ventas`;
  2. DELIMITER $$
  3.  
  4. CREATE TRIGGER `ai_ventas` AFTER INSERT ON `ventas`
  5.  
  6.  
  7.   UPDATE inventario I
  8.      SET I.estado = 'Vendido'
  9.   WHERE  I.articulo = (SELECT articulo FROM ventas WHERE id = NEW.id);
  10.  END$$
  11.  DELIMITER ;

Te sugiero usar una interfaz con corrector sintáctico, como por ejemplo MySQL Workbench, para evitar estos problemas básicos de codificación.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)