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

Откуда:
Сообщений: 283
Добрый день, есть таблица T1 с полями ID,F1, F2 и таблица Log с полями : ключевое значение, имя измененного поля, старое значение поля, новое значение поля, дату изменения. Необходимо разработать процедуру, формирующую лог изменения по одному (любому) полю (кроме ключевого).
26 окт 17, 10:57    [20901239]     Ответить | Цитировать Сообщить модератору
 Re: Тригер с параметром 'имя поля'  [new]
rnk
Member

Откуда:
Сообщений: 126
SDA_H,
Сравни значения полей в inserted и deleted.
26 окт 17, 10:59    [20901253]     Ответить | Цитировать Сообщить модератору
 Re: Тригер с параметром 'имя поля'  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7757
SDA_H,

то, что Вы хотите сделать, при изменении объемов данных, скажем, превышающее несколько тысяч записей приведет к значительной деградации запросов. Так что подумайте как следует.

Более, того, разнотипные значения придется конвертировать в текст. Плюс избыточное хранение названий столбцов. Третья проблема - невозможность машинной обработки истории, вы такую историю не сможете обрабатывать как отношение. Смотреть на нее будет приятно, но... бесполезно для автоматизации.

Если Вас это не останавливает, то можно использовать UNPIVOT для превращения атрибутов в строки.
26 окт 17, 11:38    [20901434]     Ответить | Цитировать Сообщить модератору
 Re: Тригер с параметром 'имя поля'  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3708
SDA_H
Добрый день, есть таблица T1 с полями ID,F1, F2 и таблица Log с полями : ключевое значение, имя измененного поля, старое значение поля, новое значение поля, дату изменения. Необходимо разработать процедуру, формирующую лог изменения по одному (любому) полю (кроме ключевого).


Может нет смысла лепить свой лисапед, а воспользоваться встроенными средствами сервера?
@@VERSION
26 окт 17, 12:35    [20901698]     Ответить | Цитировать Сообщить модератору
 Re: Тригер с параметром 'имя поля'  [new]
SDA_H
Member

Откуда:
Сообщений: 283
как в тригере получить имя изменяемого поля?
26 окт 17, 14:49    [20902470]     Ответить | Цитировать Сообщить модератору
 Re: Тригер с параметром 'имя поля'  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
SDA_H,

IF UPDATE(<column>)
BEGIN
END

да и вообще
26 окт 17, 14:51    [20902481]     Ответить | Цитировать Сообщить модератору
 Re: Тригер с параметром 'имя поля'  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
https://stackoverflow.com/questions/12137102/sql-update-trigger-only-when-column-is-modified

*рука дрогнула
26 окт 17, 14:52    [20902485]     Ответить | Цитировать Сообщить модератору
 Re: Тригер с параметром 'имя поля'  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
TaPaK
SDA_H,

IF UPDATE(<column>)
BEGIN
END

да и вообще
UPDATE() не имеет никакого отношения к изменённому полю.
26 окт 17, 14:56    [20902513]     Ответить | Цитировать Сообщить модератору
 Re: Тригер с параметром 'имя поля'  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
iap
TaPaK
SDA_H,

IF UPDATE(<column>)
BEGIN
END

да и вообще
UPDATE() не имеет никакого отношения к изменённому полю.

а 10 UPDATE() ?
26 окт 17, 14:59    [20902529]     Ответить | Цитировать Сообщить модератору
 Re: Тригер с параметром 'имя поля'  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
TaPaK
iap
пропущено...
UPDATE() не имеет никакого отношения к изменённому полю.

а 10 UPDATE() ?
Да хоть миллиард.
Не надо вводить людей в заблуждение.
26 окт 17, 15:12    [20902615]     Ответить | Цитировать Сообщить модератору
 Re: Тригер с параметром 'имя поля'  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
iap
TaPaK
пропущено...

а 10 UPDATE() ?
Да хоть миллиард.
Не надо вводить людей в заблуждение.

ну так выведите нас
26 окт 17, 15:14    [20902633]     Ответить | Цитировать Сообщить модератору
 Re: Тригер с параметром 'имя поля'  [new]
о-о
Guest
хороший вопрос....
26 окт 17, 15:54    [20902855]     Ответить | Цитировать Сообщить модератору
 Re: Тригер с параметром 'имя поля'  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
SDA_H
как в тригере получить имя изменяемого поля?
Вам же уже ответили:
rnk
SDA_H,
Сравни значения полей в inserted и deleted.
26 окт 17, 17:34    [20903528]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить