我正在编写一个自定义WP插件。
安装插件时,会在WP数据库中创建自定义表。
我想要的是一些WP方法来为我的表创建一个触发器。
wpdb->query()
似乎无法创建触发器。
我的代码是:
global $wpdb;
$sql = "
DROP TRIGGER IF EXISTS `delete_distributer_related_data`;
DElIMITER //
CREATE TRIGGER `delete_distributer_related_data` AFTER DELETE ON `naqdina_distributers`
FOR EACH ROW delete from naqdina_addresses where address_reference_type ='distributer' and
id = OLD.id //
DElIMITER";
$wpdb->query($sql);
非常感谢任何帮助。
答案 0 :(得分:0)
您的触发器语法错误。最好的方法是直接在mysql上编写触发器,但是如果你需要通过PHP端执行它,那么你可以检查这个线程Create mysql trigger via PHP?
现在从mysql终端或PHPMyadmin回到触发器部分,触发器应该看起来像
DROP TRIGGER IF EXISTS delete_distributer_related_data;
delimiter //
create trigger delete_distributer_related_data
after insert on naqdina_distributers
for each row
begin
delete from naqdina_addresses
where address_reference_type ='distributer' and id = OLD.id ;
END; //
delimiter ;
请注意,当您使用mysql_或mysqli_函数从PHP端执行触发器时,您不需要分隔符部分。