我真的很希望有人能幫助我解決這個問題,因爲它已經困擾了我好幾天。我的用戶表上有一個after插入觸發器,用於在每次插入後將記錄插入到審計表中。這工作正常,如果我在手動執行插入語句的命令行。但是,當我的Web表單插入到表中時,插入到審計表中的所有值都是空值。我想也許這是一個權限問題,所以我將CURRENT_USER()和USER()添加到要插入審計表的觸發器中。這表明觸發器正由觸發器的所有者「admin」用戶執行。MySQL「插入後」觸發器不斷插入空值
這裏是我的觸發器:
DELIMITER ^^
CREATE TRIGGER UsersInsert AFTER INSERT ON Users
FOR EACH ROW
BEGIN
INSERT INTO `users_audit` (`username`, `address`, `email`)
VALUES
(USER(), NEW.address, NEW.email);
END
^^
這將插入到審計表如下:管理@本地,NULL,NULL
這裏是管理用戶的權限:
GRANT ALL PRIVILEGES ON `MyDB`.* TO 'admin'@'localhost' WITH GRANT OPTION
就像我說的,它可以完美地從mysql命令行運行。但由於某種原因,從網絡表單執行時,「新」值都是空值。
請幫忙。提前致謝。
UPDATE在2013年2月6日:
我嘗試過類似扳機但「AFTER UPDATE」,它工作正常。所以這個問題是孤立的插入。這也證明,這不是一個權限問題。
可能是與用戶權限的問題......你使用相同的MySQL用戶在命令行上並在網絡應用程序? –
是的。我使用兩個管理員帳戶。 – Caesar
我也看到這篇文章,並選中「autocommit」,發現它在我的系統上默認打開,所以沒有幫助:http://stackoverflow.com/questions/2921546/mysql-trigger-works-after- console-insert-but-not-after-script-insert?rq = 1 – Caesar