2014-05-19 58 views
0

我正在編寫一個自定義WP插件。 安裝插件時,在WP數據庫中創建自定義表。 我想要的是一些WP方法來爲我的表創建一個觸發器。 wpdb->query()似乎不適用於創建觸發器。 我的代碼是:如何在自定義WP插件安裝中創建MySQL觸發器

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

您的觸發器語法錯誤。最好的方法是直接在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端執行觸發器,您不需要分隔符部分。