$ wpdb y MySQL Create Trigger

4

¿Los métodos de $wpdb no aceptan una consulta MySQL CREATE TRIGGER ? Lo intenté con $wpdb->query( $sql_trigger ) una y otra vez sin éxito. Al lanzar la consulta de creación de activación en phpMyAdmin, se crea la activación, por lo que la consulta parece estar bien.

$sql_trigger = "DELIMITER //
                CREATE TRIGGER triggerName
                BEFORE UPDATE
                ON 'table_name'
                FOR EACH ROW
                BEGIN
                    IF NEW.amount < 0 THEN
                        SET NEW.amount = 0;
                    ELSEIF NEW.amount > 100 THEN
                        SET NEW.amount = 100;
                    END IF;
                END; //
                DELIMITER ;
                ";

Sólo lea que EddyR usó mysqli para crear su disparador. enlace

¿No hay manera de usar las 'funciones nativas' de WP para crear un activador de mysql o estoy haciendo algo mal?

editar: Separar la configuración de DELIMITER y la consulta como esta (o incluso cambiar el DELIMITER de // a $$ ) no cambió nada. sigue siendo el mismo problema.

$sql_before_trigger = "DELIMITER $$";
$sql_after_trigger = "DELIMITER ;";

$wpdb->query( $sql_before_trigger );
$wpdb->query( $sql_trigger );
$wpdb->query( $sql_after_trigger );
    
pregunta chabi 22.12.2013 - 15:58

1 respuesta

4

En la pregunta a la que te vinculaste, la solución fue usar mysqli_multi_query como la API para ejecutar el SQL. $ wpdb no tiene una API para realizar una consulta múltiple, por lo que no puede usarla directamente, pero puede obtener el identificador de la interfaz de mysql desde $wpdb->dbh y hacer algo como

$sql_trigger = "....";
mysqli_multi_query($wpdb->dbh,$sql_trigger);
    
respondido por el Mark Kaplun 22.12.2013 - 17:14

Lea otras preguntas en las etiquetas