何日も悩まされているので、誰かがこれを手伝ってくれることを本当に願っています。users テーブルに after insert トリガーがあり、挿入のたびにレコードを監査テーブルに挿入します。コマンドラインでinsertステートメントを手動で実行している場合、これは正常に機能します。ただし、Web フォームがテーブルに挿入されると、監査テーブルに挿入されるすべての値が null になります。おそらく権限の問題だと思っているので、監査テーブルに挿入するトリガーに CURRENT_USER() と USER() を追加しました。トリガーの所有者である「admin」ユーザーによってトリガーが実行されていることを示しています。
これが私のトリガーです:
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
^^
これにより、監査テーブルに次が挿入されます: admin@localhost, null, null
管理者ユーザーの権限は次のとおりです。
GRANT ALL PRIVILEGES ON `MyDB`.* TO 'admin'@'localhost' WITH GRANT OPTION
私が言ったように、mysql コマンドラインから完全に動作します。しかし、Web フォームから実行すると、何らかの理由で "NEW" 値がすべて null になります。
助けてください。前もって感謝します。
2013 年 2 月 6 日の更新:
同様のトリガーを試しましたが、「AFTER UPDATE」を使用すると正しく機能しました。したがって、問題は挿入に分離されます。また、これは許可の問題ではないことも証明しています。