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 );
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);