powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Триггер не работает
13 сообщений из 13, страница 1 из 1
Триггер не работает
    #32031223
Sergy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу, чтобы в таблицу нельзя было добавить(обновить) две одинаковые записи в поле FieldID
CREATE TRIGGER [TRIG_Ins_Upd_TableA] ON [dbo].[TаbleA]
FOR INSERT, UPDATE
AS

if Exists(select * from TableA where FieldID in (select FieldID from Inserted where FieldID is not null) )
begin
Rollback Tran
Raiserror('Duplicate FieldID !!!',16,10)
return
end

Он неправильно срабатывает. Может кто подскажет, где ошибка?
...
Рейтинг: 0 / 0
Триггер не работает
    #32031230
himikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А чем UNIQUE не подходит?
...
Рейтинг: 0 / 0
Триггер не работает
    #32031231
himikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А чем UNIQUE не подходит?
...
Рейтинг: 0 / 0
Триггер не работает
    #32031238
Sergy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поле FieldID может быть NULL
...
Рейтинг: 0 / 0
Триггер не работает
    #32031265
Erika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сначала Raiserror, потом Rollback.
А вообще - http://www.sql.ru/cgi-bin/UltraBoard/UltraBoard.pl?Action=ShowPost&Board=mssql&Post=4593
...
Рейтинг: 0 / 0
Триггер не работает
    #32031267
Deem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В чем заключается неправильное срабатывание?
...
Рейтинг: 0 / 0
Триггер не работает
    #32031270
noname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
UNIQUE Constraints там может быть NULL, в отличии от primary key
...
Рейтинг: 0 / 0
Триггер не работает
    #32031272
Erika
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2noname
> UNIQUE Constraints там может быть NULL, в отличии от primary key

Конечно, может, но только один NULL (Ежели бы все было так очевидно, кто бы стал триггеры писать).
А попытки вставить в поле с UNIQUE Constraints второй NULL оканчиваются неудачей. Поэтому с триггерами и мучаются.
...
Рейтинг: 0 / 0
Триггер не работает
    #32031275
noname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще говоря, null это не есть хорошо...
...
Рейтинг: 0 / 0
Триггер не работает
    #32031279
Sergy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Erika Сначала Raiserror, потом Rollback.
Почему? Логично было бы сначала RollBack а потом Raiserror?
...
Рейтинг: 0 / 0
Триггер не работает
    #32031280
Dankov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такое подозрение, что этот триггер срабатывает при любом INSERT/UPDATE, так как условие в IF всегда истинно.
...
Рейтинг: 0 / 0
Триггер не работает
    #32031284
Deem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
To Dankov:
Это даже не подозрение, а полная уверенность.
Когда работает триггер, таблица находится в том состоянии, в котором она была бы, если бы транзакция была уже зафиксирована. Таким образом, все, что сидит в Inserted, уже есть в таблице, и поэтому поле FieldID в Inserted всегда будет иметь соответствия в таблице.
...
Рейтинг: 0 / 0
Триггер не работает
    #32031286
Sergy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СпасибоErike, ее пост "http://www.sql.ru/cgi-bin/UltraBoard/UltraBoard.pl?Action=ShowPost&Board=mssql&Post=4593" помог
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Триггер не работает
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]