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

Откуда: Minsk Power Station
Сообщений: 508
Здраствуйте!
Есть сервер Microsoft SQL Server 2012 - 11.0.2100.60 (X64) Feb 10 2012 19:39:15 Copyright (c) Microsoft Corporation Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

Вопрос такой, можно ли каким-то механизмом (пока склоняюсь к возможностям триггера) контролировать одну из таблиц(Personals), на предмет удаления оттуда записи(-ей), и если запись удаляется, то запускался бы некий механизм, который сверял бы в таблице PersonalsHistory определённые данные, и на случай если они разнятся, то механизм пополнял бы таблицу PersonalsHistory?

Пример, есть таблица Personals:
[Name], [Function], [Date]
Валя, Администратор, 2016-11-04
Маша, Посудомойка, 2016-11-04 
Катя, Повар, 2016-08-13

Затем, может так произойти, что запись
Валя, Администратор, 2016-11-04
удалили. Но перед тем, как удалить запись, надо внести отметку в таблицу PersonalsHistory о Вале:
Валя, Администратор, 2016-11-04
но только вначале проверив, нету ли там уже подобной записи, т.е.
SELECT 0 FROM PersonalsHistory Where [Name]='Валя' AND [Function]='Администратор'


Так вот, каким способом это можно контролировать (а именно, удаление/изменение записи)? Триггерами?
19 фев 17, 23:54    [20227065]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите возможности триггера  [new]
Владислав Колосов
Member

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

можно триггером, можно написать процедуру для удаления.
20 фев 17, 11:02    [20227699]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите возможности триггера  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Конечно же триггер FOR DELETE (на самом деле и FOR UPDATE).
Больше можно узнать из этой великолепной статьи:
https://www.sql.ru/articles/mssql/2005/030701changeslogging.shtml
Кое-что там устарело, кое-что лучше сделать по-другому, но прочитать полезно.
20 фев 17, 11:51    [20227948]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите возможности триггера  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
iap
Конечно же триггер FOR DELETE (на самом деле и FOR UPDATE).
Больше можно узнать из этой великолепной статьи:
https://www.sql.ru/articles/mssql/2005/030701changeslogging.shtml
Кое-что там устарело, кое-что лучше сделать по-другому, но прочитать полезно.
В упомянутых триггерах записи из deleted,
отличающиеся от соответствующих записей inserted значениями в контролируемых полях,
вставлять в таблицу с историей.
20 фев 17, 11:54    [20227977]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить