Оптимальный вариант ведения пользовательских логов

Рейтинг: 0Ответов: 1Опубликовано: 19.10.2014

Сейчас создана таблица Log в Mysql, которая заполняется событиями трегеров (INSERT) от других запросов в системе.
Таблица содержит информацию, которую нужно расширить, например, сейчас тригер (INSERT AFTER) имеет вид:

BEGIN
   INSERT INTO log Set 
   LogTime = NEW.ArticleTime, 
   LogIdNote = NEW.idArticle, 
   LogName = NEW.ArticleName,
   LogType = 1,
   logTypeCategory = NEW.ArticleCategory,
   LogIdUser = NEW.ArticleToUserID;
END

Вся проблема в том, что для тригера нужно добавить еще пару полей, которых нет в NEW операторе. Например, имя пользователя:

LogIdUser = NEW.ArticleToUserID;
....
LogUserName = 'Username from current session PHP'

У кого есть какие предложения и идеи?

Ответы

▲ 1Принят

Так?

CREATE TRIGGER article_insert 
AFTER INSERT ON `articles` 
FOR EACH ROW 
  insert into log (LogTime, LogIdNote, LogName, LogType, LogIdUser) 
    select NEW.ArticleTime, NEW.idArticle, NEW.ArticleName, NEW.ArticleToUserID, u.type
    from users u where u.id = NEW.ArticleToUserID;

С session аналогично. Она же где-то в базе хранится? Если нет, то никак.

ЗЫ NEW - это не оператор, а кортеж, содержащий значения полей вставляемых записей. Т.е. запись, одна.