|
|
|
Триггер не работает
|
|||
|---|---|---|---|
|
#18+
Хочу, чтобы в таблицу нельзя было добавить(обновить) две одинаковые записи в поле 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 Он неправильно срабатывает. Может кто подскажет, где ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2002, 08:47 |
|
||
|
Триггер не работает
|
|||
|---|---|---|---|
|
#18+
А чем UNIQUE не подходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2002, 08:58 |
|
||
|
Триггер не работает
|
|||
|---|---|---|---|
|
#18+
А чем UNIQUE не подходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2002, 08:59 |
|
||
|
Триггер не работает
|
|||
|---|---|---|---|
|
#18+
Поле FieldID может быть NULL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2002, 09:47 |
|
||
|
Триггер не работает
|
|||
|---|---|---|---|
|
#18+
Сначала Raiserror, потом Rollback. А вообще - http://www.sql.ru/cgi-bin/UltraBoard/UltraBoard.pl?Action=ShowPost&Board=mssql&Post=4593 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2002, 11:49 |
|
||
|
Триггер не работает
|
|||
|---|---|---|---|
|
#18+
В чем заключается неправильное срабатывание? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2002, 11:54 |
|
||
|
Триггер не работает
|
|||
|---|---|---|---|
|
#18+
UNIQUE Constraints там может быть NULL, в отличии от primary key ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2002, 12:09 |
|
||
|
Триггер не работает
|
|||
|---|---|---|---|
|
#18+
2noname > UNIQUE Constraints там может быть NULL, в отличии от primary key Конечно, может, но только один NULL (Ежели бы все было так очевидно, кто бы стал триггеры писать). А попытки вставить в поле с UNIQUE Constraints второй NULL оканчиваются неудачей. Поэтому с триггерами и мучаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2002, 12:21 |
|
||
|
Триггер не работает
|
|||
|---|---|---|---|
|
#18+
Вообще говоря, null это не есть хорошо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2002, 12:47 |
|
||
|
Триггер не работает
|
|||
|---|---|---|---|
|
#18+
>Erika Сначала Raiserror, потом Rollback. Почему? Логично было бы сначала RollBack а потом Raiserror? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2002, 13:07 |
|
||
|
Триггер не работает
|
|||
|---|---|---|---|
|
#18+
Есть такое подозрение, что этот триггер срабатывает при любом INSERT/UPDATE, так как условие в IF всегда истинно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2002, 13:19 |
|
||
|
Триггер не работает
|
|||
|---|---|---|---|
|
#18+
To Dankov: Это даже не подозрение, а полная уверенность. Когда работает триггер, таблица находится в том состоянии, в котором она была бы, если бы транзакция была уже зафиксирована. Таким образом, все, что сидит в Inserted, уже есть в таблице, и поэтому поле FieldID в Inserted всегда будет иметь соответствия в таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2002, 13:40 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32031279&tid=1822589]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
210ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 512ms |

| 0 / 0 |
