Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите начинающему  [new]
Z_Alex
Member

Откуда: Владивосток
Сообщений: 80
Всем привет!
У менч такой вопрос - как в операторе IF UPDATE() в качестве параметра указать строковую переменную с именем поля
Например

Declare @FN nvarchar(10)
set @FN = 'Fam_ID'
If UPDATE(@FN)
.......

Возможно ли такое?
Спасибо.
12 сен 03, 03:41    [335916]     Ответить | Цитировать Сообщить модератору
 Re: Помогите начинающему  [new]
Alex Antonoff
Member

Откуда: Из лесу вестимо
Сообщений: 1251
Используй COLUMNS_UPDATED()
12 сен 03, 05:48    [335926]     Ответить | Цитировать Сообщить модератору
 Re: Помогите начинающему  [new]
Z_Alex
Member

Откуда: Владивосток
Сообщений: 80
Как использовать Column_Updated я чтото не соображу.
Вообще у меня задачи такая:
Написать триггер, который записывает в таблицу изменений старое и новое значение изменненного поля.
Modificarions(Tab_Name,Id_Row, Field_Name, Old_Value, New_Value, Data, User)

Т.е. перебираем в переменной все поля таблицы и подставляем его в выражение IF UPDATE(). Для каждого поля писть ломы, т.к. много полей и много таблиц.
12 сен 03, 05:57    [335929]     Ответить | Цитировать Сообщить модератору
 Re: Помогите начинающему  [new]
AngelOKES
Member

Откуда: Россия г.Оренбург
Сообщений: 349
Ты что триггер пишешь, если да то там есть
IF UPDATE(имя_поля)
bla-bla-bla

А на счет переменной, это какой она UPDATE должна пережить чтобы проверять IF UPDATE
12 сен 03, 07:07    [335952]     Ответить | Цитировать Сообщить модератору
 Re: Помогите начинающему  [new]
Alex Antonoff
Member

Откуда: Из лесу вестимо
Сообщений: 1251
А ты сделай генерацию тригеров, так будет быстрее и красивей ))) Только нужно будет при изменении таблиц перегенерировать тригеры...
12 сен 03, 07:08    [335953]     Ответить | Цитировать Сообщить модератору
 Re: Помогите начинающему  [new]
Z_Alex
Member

Откуда: Владивосток
Сообщений: 80
См. подробнее в сообщ. 2
12 сен 03, 07:13    [335956]     Ответить | Цитировать Сообщить модератору
 Re: Помогите начинающему  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Для каждого поля писть ломы, т.к. много полей и много таблиц.

Блин! Да что ж это такое!? Опять кто то хочет универсальный триггер написать!!!
12 сен 03, 08:22    [335996]     Ответить | Цитировать Сообщить модератору
 Re: Помогите начинающему  [new]
Z_Alex
Member

Откуда: Владивосток
Сообщений: 80
Блин! Да что ж это такое!? Опять кто то хочет универсальный триггер написать!!!

А что я не первый?
Ну и как успехи в написании универсального триггера?
12 сен 03, 08:34    [336010]     Ответить | Цитировать Сообщить модератору
 Re: Помогите начинающему  [new]
Alex Antonoff
Member

Откуда: Из лесу вестимо
Сообщений: 1251
tpg Написать то все можно )))
12 сен 03, 08:49    [336025]     Ответить | Цитировать Сообщить модератору
 Помогите начинающему  [new]
Z_Alex
Member

Откуда: Владивосток
Сообщений: 80
Так значит нельзя так обращаться к полям?, если можно было бы, то написал бы универсальный триггер аудита.
12 сен 03, 09:02    [336050]     Ответить | Цитировать Сообщить модератору
 Re: Помогите начинающему  [new]
Alex Antonoff
Member

Откуда: Из лесу вестимо
Сообщений: 1251
Да можно... блин ...

select *

from syscolumns sc
cross join inserted i
where sc.id = object_id(@TableName)
and substring(COLUMNS_UPDATED(),cast(ceiling(sc.colid/8.0) as integer),1)&power(2,sc.colid-floor(sc.colid/8.0)*8-1)>0


Но лучше не нужно...
12 сен 03, 09:11    [336057]     Ответить | Цитировать Сообщить модератору
 Re: Помогите начинающему  [new]
AndreK
Member

Откуда:
Сообщений: 3251
Который раз читаю что люди хотят отслеживать изменения в таблицах. Но ведь есть же Lumigent Log Explorer. Там есть всё! Зачем писать? Надо пользоваться!
12 сен 03, 12:15    [336494]     Ответить | Цитировать Сообщить модератору
 Re: Помогите начинающему  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Который раз читаю что люди хотят отслеживать изменения в таблицах. Но ведь есть же Lumigent Log Explorer. Там есть всё! Зачем писать? Надо пользоваться!

А, интересно, скока он стОит?
12 сен 03, 12:19    [336508]     Ответить | Цитировать Сообщить модератору
 Re: Помогите начинающему  [new]
AndreK
Member

Откуда:
Сообщений: 3251
вопросы кряков здесь не обсуждают...
12 сен 03, 12:27    [336536]     Ответить | Цитировать Сообщить модератору
 Re: Помогите начинающему  [new]
Alex Antonoff
Member

Откуда: Из лесу вестимо
Сообщений: 1251
tpg Можешь взять у меня в архиве
12 сен 03, 12:58    [336642]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить