web-dev-qa-db-fra.com

$ wpdb et MySQL Create Trigger

Les méthodes de $wpdb n'acceptent-elles pas une requête MySQL CREATE TRIGGER? Je l'ai essayé avec $wpdb->query( $sql_trigger ) maintes et maintes fois sans succès. En lançant la requête create-trigger-query sur phpMyAdmin, le déclencheur est créé, de sorte que la requête semble être correcte.

$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 ;
                ";

Il suffit de lire EddyR a utilisé mysqli pour créer sa gâchette. https://wordpress.stackexchange.com/a/34653

N'y a-t-il pas moyen d'utiliser les 'fonctions natives' de WP pour créer un déclencheur mysql ou est-ce que je fais quelque chose de mal?

edit: La séparation des paramètres DELIMITER et de la requête de ce type (ou même le changement de DELIMITER de // à $$) n’a rien changé. toujours le même problème.

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

$wpdb->query( $sql_before_trigger );
$wpdb->query( $sql_trigger );
$wpdb->query( $sql_after_trigger );
5
chabi

Dans la question à laquelle vous avez lié, la solution consistait à utiliser mysqli_multi_query en tant qu'API pour l'exécution du code SQL. $ wpdb ne dispose pas d'une API pour effectuer une requête multiple, vous ne pouvez donc pas l'utiliser directement, mais vous pouvez obtenir le descripteur de l'interface mysql à partir de $wpdb->dbh et faire quelque chose comme:

$sql_trigger = "....";
mysqli_multi_query($wpdb->dbh,$sql_trigger);
5
Mark Kaplun