做$wpdb
\'s方法不接受MySQLCREATE TRIGGER
查询我试过了$wpdb->query( $sql_trigger )
一次又一次没有成功。在phpMyAdmin上抛出create trigger查询触发器被创建,因此查询看起来很好。
$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 ;
";
刚刚读到EddyR使用mysqli创建触发器。
https://wordpress.stackexchange.com/a/34653是否没有办法使用WP的“本机函数”来创建mysql触发器,或者我做错了什么?
edit:像这样分离分隔符设置和查询(甚至从//
到$$
)没有任何改变。还是一样的问题。
$sql_before_trigger = "DELIMITER $$";
$sql_after_trigger = "DELIMITER ;";
$wpdb->query( $sql_before_trigger );
$wpdb->query( $sql_trigger );
$wpdb->query( $sql_after_trigger );
最合适的回答,由SO网友:Mark Kaplun 整理而成
在您链接到的问题中,解决方案是使用mysqli_multi_query
作为执行SQL的API$wpdb desen没有API来执行多重查询,因此您不能直接使用它,但您可以从$wpdb->dbh
然后做一些类似的事情
$sql_trigger = "....";
mysqli_multi_query($wpdb->dbh,$sql_trigger);