2009-11-19 3 views
4

Я создаю триггер в MySQL, чтобы сообщить мне, что WHO (какой пользователь mysql) выполняет обновление в конкретной таблице.Использовать mysql-пользователя в триггере

Я знаю, что у MySQL есть функция CURRENT_USER(), но нужно ли вставлять имя пользователя во время запуска CREATED или во время вызова CALLED?

Это мой спусковой механизм до сих пор. Я хочу вставить имя пользователя в столбец «content».

delimiter | 
CREATE TRIGGER update_product_procedure 
BEFORE UPDATE ON product_procedure 
FOR EACH ROW BEGIN 
INSERT INTO trigger_logs SET 
content = 'This is a test', postDate=NOW(); 
END; 
| 
+1

Интересный вопрос Мой первоначальный думаю, что это будет Вызывающий, но я буду следить за вопросом, чтобы увидеть реальный ответ. –

ответ

4

Я бы поставил много денег на это время заклинателя, но из http://bugs.mysql.com/bug.php?id=5861:

SQL стандарт говорит, что: «Срабатывающая действие всегда выполняется под разрешения владельца схемы который включает триггер. " Это означает, что в MySQL мы должны выполнить тело триггера при авторизации пользователя, который создал триггер, а не тот, кто выпустил оператор, который вызвал этот триггер.

Извиняюсь, я предположил, что это был очевидный вопрос :-(

С уважением

EDIT:. Пользователей() дает заклинателя

+0

Спасибо. Не беспокойтесь. Я выбрал USER(), которого я не знал. –

+0

Спасибо, что нашли время для исследования. Я также не знал о USER(). Полезно знать: D –

+0

Вероятно, очевидно, но возможность получить пользователя, права которого применяются к t он срабатывает с CURRENT_USER(), также хорошо знать. – wmorse

Смежные вопросы