Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
serhio88 Member Откуда: Сообщений: 52 |
есть таблица raport: id_raport numeric(18, 0) nomer float dt date триггер должен проверять столбец dt и nomer, если строка с такими записями есть то запрос не выполнять, так не получается: use [123] go CREATE TRIGGER ss ON raport FOR INSERT AS DECLARE @dt date SELECT @dt = dt FROM inserted IF EXISTS(SELECT dt FROM raport WHERE dt = @dt GROUP BY dt HAVING COUNT(dt ) > 1) ROLLBACK tran подскажите пожалуйста. |
21 авг 14, 16:54 [16475511] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37138 |
Для таких вещей придумали unique constraint. |
||
21 авг 14, 16:55 [16475520] Ответить | Цитировать Сообщить модератору |
serhio88 Member Откуда: Сообщений: 52 |
Гавриленко Сергей Алексеевич, но мне надо запретить добавлять строку если в этот день и этим пользователем это уже сделалось, т.е по двум признакам. |
21 авг 14, 16:58 [16475538] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
1. unique constraint можно делать по многим полям 2. при срабатывании after триггера добавленные записи уже находятся в таблицы и попадают под вашу проверку |
||
21 авг 14, 17:02 [16475567] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47045 |
|
||||
21 авг 14, 17:08 [16475598] Ответить | Цитировать Сообщить модератору |
serhio88 Member Откуда: Сообщений: 52 |
Glory, дайте пожалуйста пример как это делается. |
21 авг 14, 17:11 [16475618] Ответить | Цитировать Сообщить модератору |
xenix
Guest |
CREATE UNIQUE INDEX IDX_UQNomerDate ON dbo.RAPORT(nomer,dt) Кстати, nomer типа float - это шутка? |
21 авг 14, 17:14 [16475644] Ответить | Цитировать Сообщить модератору |
serhio88 Member Откуда: Сообщений: 52 |
да )) спасибо всё получилось |
||
21 авг 14, 17:20 [16475690] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Так же, как и для одного поля. Только для двух, трех, ... полей |
||
21 авг 14, 17:22 [16475709] Ответить | Цитировать Сообщить модератору |
serhio88 Member Откуда: Сообщений: 52 |
Glory, ещё раз всем спасибо за помощь. |
21 авг 14, 17:34 [16475797] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |