Константин Туманов
Дата: 21.01.2009 16:36:57
Уважаемые господа!
Прошу поделиться мнениями по поводу решения следующей проблемы.
Для нескольких таблиц базы данных (БД) SQL Server 2000 установлены триггеры "AFTER INSERT", вставляющие записи в таблицу [Обновление] этой же БД (протоколирует изменения в БД для целей пользовательского приложения).
Поле [Дата] таблицы [Обновление] содержит дату и время выполнения операции (после которой активируется триггер). Триггеры заполняют это поле с помощью функции Transact-SQL GETDATE().
На практике иногда выходит так, что последовательность, в которой некоторые записи вставлены в таблицу [Обновление], противоречит значениям поля [Дата], то есть время (значение поля [Дата]) - позже, а запись в таблице [Обновление] появилась раньше.
Последовательность, в которой записи расположены в таблице [Обновление], важна для пользовательского приложения.
Что может быть причиной такого "непоследовательного срабатывания" триггеров? Может ли оказать влияние на ситуацию уровень изоляции транзакций или другие настройки SQL-сервера?
Заранее спасибо!
Константин Туманов
Дата: 21.01.2009 16:47:50
Хороший вопрос!
Могу только сказать, что последовательность каждый раз одинаковая: при выборе запросом из программы через ADO, при открытии таблицы с помощью Enterprise Manager или Query Analyzer.