
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
20.09.2002, 11:53:06
|
|||
|---|---|---|---|
Кто тупее - я или триггер? |
|||
|
#18+
Уважаемые коллеги! Столкнулся я с таким достаточно академическим вопросом: -- Есть приложение, где триггеры - калька с ErWin шаблонов (несколько подредактированных). -- В этих триггерах повторяется следующая конструкция (для всех видов: INSERT, DELETE, UPDATE): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Вопрос собственно такой: Может ли быть, чтобы @ValidCnt <> @NumRows и в каких случаях (I,D,U)? А то мне кажется, что это все - просто перестраховка. Разубедите меня, пожалуйста. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.09.2002, 12:46:30
|
|||
|---|---|---|---|
Кто тупее - я или триггер? |
|||
|
#18+
Ну, господа писатели! Отличная глава для книги по SQL - "Тонкости T-SQL":0) Серьезно - кто-нибудь знает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.09.2002, 13:05:02
|
|||
|---|---|---|---|
|
|||
Кто тупее - я или триггер? |
|||
|
#18+
Ну а какие сложности-то? Обычная конструкция для поддержки целостности при множественных операций в таблицах, НЕ связанных констрэйнтами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.09.2002, 13:18:31
|
|||
|---|---|---|---|
Кто тупее - я или триггер? |
|||
|
#18+
2 Kirk Вы неверно интерпретировали мой вопрос. Я спрашивал: " Может ли быть, чтобы @@rowcount отличалось от количества записей в inserted или updated курсорах и в каких случаях? ", а не: " Что это за конструкция такая ?" Согласитесь - разные вещи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.09.2002, 13:24:57
|
|||
|---|---|---|---|
Кто тупее - я или триггер? |
|||
|
#18+
Наверное erwin :)) Если под [scr]<id> [scr] подразумевается PK - то тогда перестраховка - а мож для совместимости -имеется ввиду общая конструкция для ВСЕХ типов баз А если не PK - то вполне мож быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.09.2002, 13:26:08
|
|||
|---|---|---|---|
|
|||
Кто тупее - я или триггер? |
|||
|
#18+
Согласен. =) В случаях, когда одно или более вставляемых (изменямых) значений не соответствует условию. =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.09.2002, 13:29:45
|
|||
|---|---|---|---|
|
|||
Кто тупее - я или триггер? |
|||
|
#18+
Т.е. к примеру (грубо) t1 a (identity) b (fk<-t2) 1 5 2 6 3 7 t2 b 5 6 7 t3 b 5 7 10 insert into t1 (b) select * from t3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.09.2002, 13:31:47
|
|||
|---|---|---|---|
Кто тупее - я или триггер? |
|||
|
#18+
2 dao Если бы это был не PK, то и вопроса бы небыло. Такое резюме: для случая id = Primary Key эта конструкция не нужна. Так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.09.2002, 13:41:14
|
|||
|---|---|---|---|
Кто тупее - я или триггер? |
|||
|
#18+
Если <table> t - это та таблица, на которую навешан этот триггер, то данная конструкция проверяет, что <id> является уникальным. В этот текст ервин превращает уникальный или ПК констрэйн. Если @ValidCnt = @NumRows - всё нормально Если @ValidCnt > @NumRows - абзац констрэйну Кстати, наверное это можно было прочитать в тексте raiserror ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.09.2002, 14:12:00
|
|||
|---|---|---|---|
Кто тупее - я или триггер? |
|||
|
#18+
2 alexeyvg Можно было-бы, если бы это были ErWin триггеры. Я же пояснил, что это - модифицированные триггеры и текст ошибки там просто "Ошибка вставки(удаления) записи" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.09.2002, 14:13:19
|
|||
|---|---|---|---|
Кто тупее - я или триггер? |
|||
|
#18+
Всем спасибо - вопрос исчерпан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.09.2002, 14:41:44
|
|||
|---|---|---|---|
Кто тупее - я или триггер? |
|||
|
#18+
А может быть это такая хитрозамысловатая проверка на NOT NULL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.09.2002, 15:18:59
|
|||
|---|---|---|---|
Кто тупее - я или триггер? |
|||
|
#18+
Триггеры же AFTER и содержимое inserted=вставленным записям. Изначально неверный ход. Вот если бы с deleted сравнивали, то получилась бы проверка на неизменяемость первичного ключа (PK) Ведь UPADTE() не показывает, изменилось ли поле, а только факт обновления поля. НЕ ПОНИМАЮ! Конструкция бессмысленна вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.09.2002, 15:40:00
|
|||
|---|---|---|---|
Кто тупее - я или триггер? |
|||
|
#18+
Триггер тупее - вышеуказанный insert into t1 (b) select * from t3 срубается раньше, чем включается триггер при наличии FK, а при отсутствии FK @@rowcount = select count(*) from inserted ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.09.2002, 15:53:02
|
|||
|---|---|---|---|
Кто тупее - я или триггер? |
|||
|
#18+
2 VAT Спасибо - успокоил! :0) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.09.2002, 22:48:19
|
|||
|---|---|---|---|
Кто тупее - я или триггер? |
|||
|
#18+
на мой взгляд - совершенно ненужная и глупая проверка. -- Слон ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&mobile=1&tid=1820157]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 193ms |
| total: | 315ms |

| 0 / 0 |
