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

Откуда: ☭
Сообщений: 72952
Сабж, собственно.
28 июл 04, 17:05    [843276]     Ответить | Цитировать Сообщить модератору
 Re: Как триггером запретить добавление записи?  [new]
ChA
Member

Откуда: Москва
Сообщений: 11137
IF @@ROWCOUNT > 0 ROLLBACK
Может реальную проблему озвучите ? Возможно, лучше нанести отказ
до выполнения триггера...
28 июл 04, 17:16    [843335]     Ответить | Цитировать Сообщить модератору
 Re: Как триггером запретить добавление записи?  [new]
_bob
Member

Откуда: Москва
Сообщений: 1654
делаешь trigger for insert

rollback tran

и все

я так всегда запрещаю удаление
28 июл 04, 17:23    [843389]     Ответить | Цитировать Сообщить модератору
 Re: Как триггером запретить добавление записи?  [new]
Antonariy
Member

Откуда: ☭
Сообщений: 72952
Лучше триггером.
Таблица: ID int PK, Identity; ProjID int, FK; OrgID int, FK
Допустим данные:
xxx, 23, 685
xxx, 23, 4532
xxx, 23, 345
xxx, 24, 3457
xxx, 24, 3451

Нужно запретить добавление записей с теми OrgID, которые присутствуют в паре допустим с ProjID = 23
28 июл 04, 17:23    [843390]     Ответить | Цитировать Сообщить модератору
 Re: Как триггером запретить добавление записи?  [new]
Antonariy
Member

Откуда: ☭
Сообщений: 72952
Дополнение: данные добавляются пакетно, нужно не отменять все действие, а только отфильтровать данные, не проходящие по условию.
28 июл 04, 17:27    [843412]     Ответить | Цитировать Сообщить модератору
 Re: Как триггером запретить добавление записи?  [new]
ChA
Member

Откуда: Москва
Сообщений: 11137
Тогда возможно лучше вынести в INSTEAD-триггер, и оттуда уже по условиям
добавлять в реальную таблицу.
28 июл 04, 17:31    [843436]     Ответить | Цитировать Сообщить модератору
 Re: Как триггером запретить добавление записи?  [new]
Antonariy
Member

Откуда: ☭
Сообщений: 72952
А так проканает?:
create trigger ... for insert as

delete from tblProjOrgs
where ProjID <> 23 and
ProjID in (select ProjID from inserted) and
OrgID in (select OrgID from inserted inner join tblProjOrgs on inserted.OrgID = tblProjOrgs.OrgID where ProjID = 23)
28 июл 04, 17:39    [843469]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить