2012-03-13 85 views
0

我正在爲客戶端安裝wordpress。 他選擇的電子商務插件不能很好地與Wordpress用戶集成。 我試圖在wordpress中創建新用戶記錄時,將新記錄插入插件的用戶帳戶系統。 對我來說,在插入之前,似乎在wp_users表上將用戶數據複製到插件表的觸發器會起作用。夠簡單。 但是,在我的測試中,我無法獲取wp_users表格觸發器來執行任何操作。新的用戶帳戶創建掛起並防止數據插入到wp_users,如果觸發事件是Before Insert或After Insert之後。指定更新之前,它允許將數據插入到wp_users中,但不允許插入表中。 它沒有正確執行觸發器。 這裏是我的代碼:爲什麼這個MySQL觸發器不能正確執行?

DROP TRIGGER IF EXISTS `user_update`// 
CREATE TRIGGER `dbname`.`user_update` 
AFTER INSERT 
ON `wp_users` FOR EACH ROW 
BEGIN 
INSERT INTO `test_data_dump` (`username`, `password`, `email`, `first_name`, `created_at`) VALUES(user_login, user_pass, user_email, user_nicename, user_registered); 
END 

任何有識之士將有助於immensley。

回答

2

問題在於這條線。您需要使用這個詞new當你引用新插入的數據:

INSERT INTO 'test_data_dump' ('username', 'password', 'email', 'first_name', 'created_at') 
    VALUES (new.user_login, new.user_pass, new.user_email, new.user_nicename, new.user_registered); 

編輯:假設你的所有表列和名稱相匹配,這句法應該工作:

DROP TRIGGER IF EXISTS user_update; 

CREATE TRIGGER user_update AFTER INSERT ON wp_users 
FOR EACH ROW BEGIN 
    INSERT INTO test_data_dump ('username', 'password', 'email', 'first_name', 'created_at') 
    VALUES (new.user_login, new.user_pass, new.user_email, new.user_nicename, new.user_registered); 
END; 
+0

引發錯誤...我也應該在insert into語句中指定old.username等嗎? – user1267382 2012-03-13 20:31:24

+0

在UPDATE上有'old',但不在INSERT觸發器上。 – CAbbott 2012-03-13 20:38:50

+0

然後我想我會問你會如何做到這一點,因爲我甚至不能觸發器保存沒有語法錯誤。我tyring使用DROP TRIGGER IF EXISTS'user_update_trigger' // CREATE TRIGGER'dbname'.'user_update_trigger' AFTER INSERT ON'semics5_users' FOR EACH ROW BEGIN INSERT INTO'dbname.'semics5_test_data_dump'('username' ,''password','email','first_name','created_at')VALUES(new.user_login,new.user_pass,new.user_email,new.user_nicename,new.user_registered); END //; – user1267382 2012-03-13 20:44:01

相關問題