Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ispolzovanie Trigerrov / 6 сообщений из 6, страница 1 из 1
05.11.2001, 14:52
    #32016592
Dima
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ispolzovanie Trigerrov
Privet !
U menya est Vopros. Kak ya mogu pri pomostschi Triggerov prosledit vse izmeneniya v Tablitzach s ukazaniem Daty. Esli mogno to soprovodite otvet primerom, a to ya i tak i etok - ne idet. Zaranee blagodaren !!!
Dima.
...
Рейтинг: 0 / 0
06.11.2001, 08:14
    #32016619
Dmitri ICQ104152399
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ispolzovanie Trigerrov
Меня тоже это интересует, и вот мой подход:
я использую для этого копию базы с дополнительными полями в таблицах, таблицы - накопительные без ключей и связей в оригинальной базе при удалении или редактировании срабатывает триггер, пример триггера на удаление ниже:

CREATE TRIGGER TRG_FOR_DELETE_TBL
ON dbo.TBL
FOR DELETE
AS
INSERT INTO base_CHANGES.dbo.TBL
SELECT /*... поля удаляемой записи ...*/,
system_user as COR_USER_LOGIN, host_name() as COR_USER_HOST,
app_name() as COR_APPLICATION, getdate() as COR_ACTION_DATE,
2 as COR_ACTION_SIGN, NULL as COR_GLOB_CHANGE_ID from deleted del

в таблице корректуры тоже есть триггер на добавление, который отписывает ID (Identity) записи из таблицы корректуры в дополнительную таблицу (SEC_Changes_Descriptor) которая содержит три поля: ID из таблицы корректуры, имя таблицы корректуры, и свой ID (COR_GLOB_CHANGE_ID Identity). Затем триггер вставляет значение identity из этой таблицы в исходную таблицу корректуры. По замыслу должно быть возможным просматривать хронологически все изменения в базе и откатывать их.
но это не всегда срабатывает т.е. иногда COR_GLOB_CHANGE_ID не вставляется в таблицу из дескриптора, не успевает что-ли? как сделать лучше???

вот этот триггер:

CREATE TRIGGER TRG_FOR_INSERT_TBL
ON dbo.TBL AFTER INSERT
AS INSERT INTO SEC_Changes_Descriptor
SELECT 'dbo.TBL' AS Table_Name,
ins.COR_CHANGE_ID as Local_Change_ID
from inserted ins
Update dbo.TBL
SET COR_GLOB_CHANGE_ID=IDENT_CURRENT('dbo.SEC_Changes_Descriptor')
where COR_CHANGE_ID=IDENT_CURRENT('dbo.TBL')

база корректуры содержит записи за 2 месяца и ежемесячно подрезается (без truncate )
...
Рейтинг: 0 / 0
06.11.2001, 12:13
    #32016630
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ispolzovanie Trigerrov
Проще без дополнительных полей в таблицах а дополнительная таблица, в которой содержится информация о том, кто, в какую таблицу, чего и когда сделал.

Т.е. из триггера таблицы основоной базы вставляется запись в вышеприведенную таблицу с указанием всех параметров, берется этот ID и с ним из таблицы вставляются все значения в копию для аудита.
Тогда никаких проблем нет
...
Рейтинг: 0 / 0
06.11.2001, 14:10
    #32016642
Dmitri+ICQ104152399
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ispolzovanie Trigerrov
да, можно и так, и даже экономичнее, но в моем случае было необходимо отследить историю изменения данных(т.е. видеть что на что поменяли), но проблему с глобальным ID я уже решил
...
Рейтинг: 0 / 0
09.11.2001, 10:30
    #32016747
Dima
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ispolzovanie Trigerrov
Ogromnoe spasibo Dmitri i Tigra. Teper u menya vse rabotaet. Bez vas by ya ne spravilsya. No vot vopros. Reagiruiyt li triggery na izmeneniya posle Merge Replikation tak ge, kak i na izmeneniya posle neposredstvennongo izmeneniya v baze iz SQL ili Access ? Esli znaete otvet - daite znat. Spasibo !!!
...
Рейтинг: 0 / 0
09.11.2001, 10:54
    #32016748
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ispolzovanie Trigerrov
Если я ничего не путаю триггера реагируют на изменения при репликации так же как и обычно, для того, что бы они не реагировали должна быть включена опция Not for replication.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Ispolzovanie Trigerrov / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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