Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с логом / 5 сообщений из 5, страница 1 из 1
24.11.2014, 19:03:49
    #38815501
Stark3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логом
Доброго, уважаемые!

Подскажите, пожалуйста, как лучше организовать триггер, пишущий лог с таблицы?
Сама таблица содержит около 20 полей
Сейчас лог реализован так:
Таблица лога:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE log_request (
  id int(11) NOT NULL AUTO_INCREMENT,
  nomer varchar(500) DEFAULT NULL,
  timestamp timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  login varchar(100) DEFAULT NULL,
  Log text DEFAULT NULL,
  PRIMARY KEY (id),
  INDEX IDX_log_request_nomer (nomer))


Триггер на AfterUpdate:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
BEGIN
  INSERT INTO log_request (nomer, login, log)
  VALUES (
    NEW.nomer, 
    'Нахождение = ', NEW.lok, '; ',
    'id Клиент = ', NEW.id_klient, '; ', 
    'ФИО Клиент = ', NEW.klient, '; ',
    'Адрес = ', NEW.adres, '; ', 
    .......
    'Тел1 = ', NEW.tel1, '; ');
END
END



Когда необходимо, достаю все записи заявки и разбираю средствами делфи

Понятно, что хранить в поле Text все громоздко и неверно, большая избыточность. Сейчас миллион записей и уже подтормаживает(

Подскажите с, возможно, другой реализацией или улучшении текущей? :)
...
Рейтинг: 0 / 0
24.11.2014, 19:39:04
    #38815533
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логом
Почему бы не хранить в том же наборе полей, в каком данные хранятся в исходной таблице?

Зачем многократно хранить вспомогательные строки вида 'Нахождение = ' ?

Какие именно операции выполняются с лог-таблицей? Если, например, это поиск по tel1, то логично, что все тормозит.
...
Рейтинг: 0 / 0
25.11.2014, 09:30:56
    #38815789
Stark3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логом
>Зачем многократно хранить вспомогательные строки вида 'Нахождение = ' ?

Задача стала более конкретизированной: как написать триггер, который бы при первой вставке помещал все данные, а при последующих, сравнивал с первой на изменения и, если есть, добавлял бы только несовпадающее
...
Рейтинг: 0 / 0
25.11.2014, 09:47:00
    #38815802
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логом
Stark3как написать триггер, который бы при первой вставке помещал все данные, а при последующих, сравнивал с первой на изменения и, если есть, добавлял бы только несовпадающееНапишите два отдельных триггера - на вставку и на изменение данных.
Кстати, на изменения можно не проверять - насколько я помню, если ничего не изменилось, то триггер вообще не сработает.
...
Рейтинг: 0 / 0
25.11.2014, 09:51:08
    #38815803
Stark3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логом
miksoft,
спасибо и на этом:)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с логом / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]