
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
11.11.2002, 07:01:33
|
|||
|---|---|---|---|
|
|||
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
мне необходимо проверить бфла ли обновленна колонка в триггере. причем имя колонки, которую надо проверить на обновление меняется динамическим образом... тоесть для меня оно доступно ТОЛЬКО в виде строки, а UPDATE неможет работать со строкой при проверке. Мне надо что то в духе IF UPDATE('dinamik_name') begin.... как предобразовать 'dinamik_name' чтоб UPDATE сработал? или какие еще есть варианты? Заранее благодарю за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.11.2002, 07:24:06
|
|||
|---|---|---|---|
|
|||
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
Пример запроса с динамическими именами: DECLARE @Query nvarchar(512) DECLARE @fName sysname DECLARE @lName sysname DECLARE @Str varchar(20) Set @fName='NAIMEN' Set @lName='ZAKAZ' Set @Str='''%004%''' SET @Query = 'SELECT [' + @fName + '] FROM Nom where ['+@lName+'] like '+@Str exec(@Query) сооруди чего-нибудь подобное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.11.2002, 07:26:05
|
|||
|---|---|---|---|
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
Можно по номеру столбца This example obtains similar results using the COLUMNS_UPDATED() clause. CREATE TRIGGER my_trig2 ON my_table FOR INSERT AS IF ( COLUMNS_UPDATED() & 2 = 2 ) PRINT 'Column b Modified' GO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.11.2002, 07:28:09
|
|||
|---|---|---|---|
|
|||
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
неподойдет. мне же нужно проверить на разницу значений. а как из динамического запроса вернуть значение в переменную? можно конечно открыть курсор, но в данной ситуации это нежелательно. кроме того, может есть путь предобразования строки к.. незнаю даже как сказать... к той форме, что требуется в UPDATE для проверки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.11.2002, 07:31:29
|
|||
|---|---|---|---|
|
|||
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
я незнаю номера колоники :((( небаза а сплошной гимаррой... количество колонок в таблице может динамичиски измениться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.11.2002, 07:36:40
|
|||
|---|---|---|---|
|
|||
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
А имя колонки вы знаете до выполнения триггера ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.11.2002, 07:40:17
|
|||
|---|---|---|---|
|
|||
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
я знаю имя колонки только во время выполнения триггера... если б до, то и проблем небыло бы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.11.2002, 08:01:34
|
|||
|---|---|---|---|
|
|||
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
Решение в лоб. Динамически сформировать запрос SELECT Count(*) FROM inserted FULL OUTER JOIN deleted ON inserted.ПОЛЕ = deleted.ПОЛЕ WHERE inserted.ПОЛЕ IS NULL OR deleted.ПОЛЕ IS NULL Соответсвенно, если Count(*) > 0, то значение в ПОЛЕ изменилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.11.2002, 08:15:50
|
|||
|---|---|---|---|
|
|||
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
для Dobro declare @str as char(1024) set @str='U query' и как мне провести сравнение на количество? что то в духе if exec(@str)=0 несрабатывает!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.11.2002, 08:50:17
|
|||
|---|---|---|---|
|
|||
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
...................... DECLARE @result sql_variant ...................... set @str='U query' execute sp_executesql @str,N'@result sql_variant OUTPUT', @result OUTPUT select @result IF @result ....... ...................... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.11.2002, 09:50:12
|
|||
|---|---|---|---|
|
|||
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
для Сергей Рябцун несрабатывает. значение @result неменяется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.11.2002, 10:03:50
|
|||
|---|---|---|---|
|
|||
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
запрос такой ?: ................................... DECLARE @lName sysname DECLARE @Query nvarchar(1024) DECLARE @result sql_variant ................................... SET @Query='SELECT @result=Count(*) FROM inserted FULL OUTER JOIN deleted ON inserted.['+@lName+'] = deleted.['+@lName+'] WHERE inserted.['+@lName+'] IS NULL OR deleted.['+@lName+'] IS NULL' execute sp_executesql @Query,N'@result sql_variant OUTPUT', @result OUTPUT select @result ................................... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.11.2002, 15:21:25
|
|||
|---|---|---|---|
|
|||
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
Ну вот, уже и сами справились:) Последний вариант Сергей Рябцуна должен работать. Едиственное уточнение: зачем @result объявлять как sql_variant, можно и обычным int обойтись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.11.2002, 06:34:27
|
|||
|---|---|---|---|
|
|||
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
Почему-то у меня таблицы Inserted и Deleted он не воспринимает в динамически сформированном запросе. Как этого избежать ? Может создать временные таблицы до создания запроса ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.11.2002, 07:37:25
|
|||
|---|---|---|---|
|
|||
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
вобщемто последний вариант в триггере наработает :((( еще вариантов нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.11.2002, 07:51:23
|
|||
|---|---|---|---|
|
|||
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
Уважаемый Glory, подскажите непонятливым "студентам" где наша ошибка :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.11.2002, 08:18:32
|
|||
|---|---|---|---|
|
|||
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
2 KyKy Нарисуйте мне весь свой триггер. Есть идейка ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.11.2002, 08:29:56
|
|||
|---|---|---|---|
|
|||
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
что то в духе ЭТОГО... понимаю - ужастно... но иначе вообще неиспользуемо выходит... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.11.2002, 09:55:08
|
|||
|---|---|---|---|
|
|||
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
Это у меня работает: begin ....................... select * into #Ins_tmp from Inserted select * into #Del_tmp from Deleted DECLARE @lName sysname DECLARE @Query nvarchar(1024) DECLARE @result int ...................... SET @Query='SELECT @result=Count(*) FROM #Ins_tmp I FULL OUTER JOIN #Del_tmp D ON I.['+@lName+'] = D.['+@lName+'] WHERE I.['+@lName+'] IS NULL OR D.['+@lName+'] IS NULL' execute sp_executesql @Query,N'@result int OUTPUT', @result OUTPUT select @result as res drop table #Ins_tmp drop table #Del_tmp ...................... Кстати, как вы перебираете имена всех полей в таблице Inserted ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.11.2002, 10:11:50
|
|||
|---|---|---|---|
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
2Сергей Рябцун Область видимости специальных таблиц inserted и deleted ограничена триггером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.11.2002, 10:18:33
|
|||
|---|---|---|---|
|
|||
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
2Glory Спасибо. Это я уже сообразил - поэтому переделал триггер немного (сообщение выше). Еще вам вопрос: как в триггере перебрать все поля таблицы Inserted, т.е. получить их имена ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.11.2002, 10:46:19
|
|||
|---|---|---|---|
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
Думаю единственная возможность - курсор по syscolumns/sysobjects/INFORMATION_SCHEMA.COLUMNS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.11.2002, 10:48:09
|
|||
|---|---|---|---|
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
2 Сергей Рябцун polya ishodnoy tablicii kak raz to chto nugno... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.11.2002, 10:50:05
|
|||
|---|---|---|---|
|
|||
IF UPDATE(some_name) в триггере. проблема!!! |
|||
|
#18+
большое спасибо за помощь!!!! про поля... меня не интересуют ВСЕ поля. только те, то лижат в таблице линк. тут возникает еще такой вопрос. а не будут ли при открытии такого количаства курсоров все работать совсем медленно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&mobile=1&tid=1818900]: |
0ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 339ms |

| 0 / 0 |
