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