Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Контроль изменения полей таблицы для MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
У когнибудь есть код триггера который ведет запись любых изменений в полях таблицы ? таблица log-а в моем представлении могла бы быть примерно такой : Дата, Поле, Старое значение, НОвое значение, Пользователь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2001, 11:44 |
|
||
|
Контроль изменения полей таблицы для MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
На www.gvu.newmail.ru лежит (в нутрях библиотеки "UNDO") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2001, 12:06 |
|
||
|
Контроль изменения полей таблицы для MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
На сайте www.embarcadero.com есть фишка Change Manager...(Там кстати целая куча всего..) можно пользоваться и при большом желании найти ключ на хакерских сайтах (если уж начальство нехочет платит а очень надо...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2001, 17:48 |
|
||
|
Контроль изменения полей таблицы для MS SQL 2000
|
|||
|---|---|---|---|
|
#18+
Если Вам нужно только то что вы написали - то вот пожалуйста, написано при участии народа с этого форума, реально работает у меня на SQL 7 CREATE TRIGGER T_НасПункты_ToLog ON [T_НасПункты] FOR UPDATE AS Declare @usr char(15) Set @usr=user Select * Into #t_Ins from inserted Select * Into #t_Del from deleted -- объявляем курсор DECLARE curCOLNAMEofT_NasPunkty CURSOR READ_ONLY FOR SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='T_НасПункты' OPEN curCOLNAMEofT_NasPunkty DECLARE @colname sysname FETCH NEXT FROM curCOLNAMEofT_NasPunkty INTO @colname WHILE (@@FETCH_STATUS = 0) BEGIN Insert Into LOG..UPDATEDINFO(cTablesrc, cFieldsrc, iRowid, cOldvalue, cNewvalue, cWho, dtWhen) EXEC('Select ' +''''+ 'Н' +'''' + ', ' + '''' +@colname + '''' + ', d.[Код] ' + ', d.'+@colname + ', i.' + @colname +', ' + ''''+ @usr + '''' +', ' + 'GETDATE()' + ' FROM #t_Ins i JOIN #t_Del d ON i.[Код] = d.[Код] AND (i.' + @colname + ' <> d.'+@colname + ' Or (d.'+ @colname + ' Is Null And i.'+@colname + ' Is Not Null ) Or (i.'+ @colname + ' Is Null And d.'+@colname + ' Is Not Null ) )') FETCH NEXT FROM curCOLNAMEofT_NasPunkty INTO @colname END CLOSE curCOLNAMEofT_NasPunkty DEALLOCATE curCOLNAMEofT_NasPunkty =================================================================================== Прим. 1. Фиксируются изменения во всех поля таблицы (при необх. какое-то можно исключить) 2. Времянки используются потому, что служебные таблицы тригера нельзя использовать в Exec 3. Таблица логов (у меня в отдельной базе, Вы смотрите сами) служит для логирования изменений не только из этой таблицы, поэтому имеет доп поле cTablesrc - какой- то краткий идентификатор таблицы-источника в которой изменили что-то. 4. Корректно работает при multirow изменениях ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2001, 06:45 |
|
||
|
|

start [/forum/topic.php?fid=46&gotonew=1&tid=1825204]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
9ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 358ms |

| 0 / 0 |
