Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] error en triggers con PDO

Estas en el tema de error en triggers con PDO en el foro de Mysql en Foros del Web. Tengo el siguiente problema desde ayer y ya me la gano. mi problema es que no puedo crear el triggers con PDO pero si puedo ...
  #1 (permalink)  
Antiguo 05/05/2013, 13:09
Avatar de asdmaster  
Fecha de Ingreso: marzo-2010
Mensajes: 98
Antigüedad: 14 años, 1 mes
Puntos: 2
error en triggers con PDO

Tengo el siguiente problema desde ayer y ya me la gano.
mi problema es que no puedo crear el triggers con PDO pero si puedo con el phpmyadmin.

al tratar de crear el triggers desde PDO me devuelve
Cita:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
Código:
        DROP TRIGGER IF EXISTS categories_bd;
        DELIMITER |
        CREATE TRIGGER categories_bd BEFORE DELETE ON categories
        FOR EACH ROW BEGIN
            DELETE FROM forums WHERE fk_id_categorie = OLD.id_categorie;
        END
        |
        DELIMITER ;
Gracias...
  #2 (permalink)  
Antiguo 05/05/2013, 14:11
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: error en triggers con PDO

Tres consejos básicos:
1) No crees TRIGGERs desde programación. No es una buena práctica y está sujeto a errores probables, porque los lenguajes de programación no manejan bien ciertas estructuras propias de la creación de rutinas.
2) Nunca uses el pipe (|), el ampersand (&) e incluso el porcentual (%)como delimitador, y menos con un único caracter. Esos símbolos se usan para operaciones propias del lenguaje SQL y pueden dar resultados erróneos en la ejecución. Por algo el manual de MySQL usa "$$" en los ejemplos, ¿no te parece?

3) No se usan DELIMITERS en la creacion de rutinas almacenadas desde programación. No es funcional porque es exclusivamente un comando de consola o script de SQL, y las librerías no lo entienden.

Envía a ejecutar directamente primero
Código MySQL:
Ver original
  1. DROP TRIGGER IF EXISTS categories_bd;
Y luego esto (no, no se puede hacer en una única operación):

Código MySQL:
Ver original
  1. CREATE TRIGGER categories_bd BEFORE DELETE ON categories
  2.         FOR EACH ROW BEGIN
  3.             DELETE FROM forums WHERE fk_id_categorie = OLD.id_categorie;
  4.         END
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 05/05/2013, 16:51
Avatar de asdmaster  
Fecha de Ingreso: marzo-2010
Mensajes: 98
Antigüedad: 14 años, 1 mes
Puntos: 2
Respuesta: error en triggers con PDO

Gracias amigo me has sido de gran ayuda .
Saludos!

Etiquetas: pdo, php, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:23.