Я тут решил поэкспериментировать и наладить ведение лога в базе в виде SQL скрипта. Создал табличку

CREATE TABLE SQL_LOG (
   ID     INTEGER NOT NULL,
   USER_  VARCHAR(32) DEFAULT current_user,
   TS     TIMESTAMP DEFAULT 'now',
   OPR    VARCHAR(4096)
);

ALTER TABLE SQL_LOG ADD CONSTRAINT PK_SQL_LOG PRIMARY KEY (ID);

Написал программку, которая автоматом генерит текст триггеров. Триггеры, на основании значений переменных .old и .new создают текст sql оператора, который обеспечит те же изменения, что происходят с текущей строчкой, и заносят его в табличку SQL_LOG. Поизменял данные в IBExperte. Все вроде работает, скрипт генериться. Но заметил одну особенность - при коммите транзакции, даже если изменил одну запись, происходит небольшая задержка. Совсем небольшая, но все-таки на глаз уловимая. При этом обязательно диск дергается. Вот закрались сомнения, ежели все это внедрить - не получу ли ощутимых тормозов при многопользовательской работе?
Экспериментировал на FB 2.0. На своем компьютере, под XP.

With b/r. Gleb.

P.S. Пока писал программку - устроил себе разминку для ума. Нет чтобы написать текст триггера, отладить его, а потом глядючи на то, что должно получиться, писать программу, этот текст генерящую. Дак ведь нет же, начал сразу... через некоторое время понял, что думается тяжело. :) Пишешь на Delphi программу, которая генерит текст триггера, который генерит текст SQL оператора, синтаксис которого, со всякими кастами и кавыками должен быть правильным. Но чего-то втравился и таки написал разом из головы :))).

P.P.S. А вообще-то у меня сегодня глобальная пятница. Завтра в отпуск. В Грецию (Салоники). Кто нибудь там был? На какие экскурсии съездить стоит? Или проще машину на прокат взять и смотаться куда-нибудь? И как там местные алкагольные напитки?

Reply via email to