|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
Уважаемый форум, Боян, но ни одно найденное решение не сработало - прошу помощи зала. Чтобы долго не расписывать - код: Код: sql 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.
В результате получаю не поле, а его имя. Пробовал и так Код: sql 1.
и через sp_executesql - нифига. Где я туплю и как побороть? Спасибо заранее! ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 11:48 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
IFKГде я туплю и как побороть? Динамические таблицы inserted/deleted не доступны ни в динанических запросах, ни в вызываемых процедурах ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 11:50 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
GloryIFKГде я туплю и как побороть? Динамические таблицы inserted/deleted не доступны ни в динанических запросах, ни в вызываемых процедурах Хм. Че-то не очень верится. Какая разница между строкой SQL где опрашивается таблица Deleted с явным указанием поля и такой же строкой, где подставляется имя поля? В принципе задача такова: необходимо в зависимости от поля, где произошло изменение данных, получить старое и новое значения. Как еще это сделать, не используя Deleted / Inserted - не знаю. Подскажите, уважаемые. Заранее благодарю! :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 12:01 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
IFKХм. Че-то не очень верится Ваше право. Если сообщение об ошибке вам не достаточно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 12:04 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
GloryIFKХм. Че-то не очень верится Ваше право. Если сообщение об ошибке вам не достаточно. Ну, это ладно - кто хочет, верит, кто хочет - нет. Как насчет конструктивных предложений? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 12:07 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
для начала написать так, чтобы триггер хотя бы потенциально правильно работал, когда в deleted > 1 записи и изменения были в более, чем в одном поле. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 12:18 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
IFK, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
И не нужен динамический sql. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 12:55 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
step_ksдля начала написать так, чтобы триггер хотя бы потенциально правильно работал, когда в deleted > 1 записи и изменения были в более, чем в одном поле. А в Deleted не будет больше одной записи, потому как триггер должен срабатывать на изменение каждой записи в одном поле из перечисленных. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 12:56 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
IFKstep_ksдля начала написать так, чтобы триггер хотя бы потенциально правильно работал, когда в deleted > 1 записи и изменения были в более, чем в одном поле. А в Deleted не будет больше одной записи, потому как триггер должен срабатывать на изменение каждой записи в одном поле из перечисленных. если одной командой меняется сразу несколько записей и/или полей, триггер сработает один раз и в deleted будет несколько записей. в документации об этом есть ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 12:59 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
IFKА в Deleted не будет больше одной записи, потому как триггер должен срабатывать на изменение каждой записи в одном поле из перечисленных.То, на что он должен срабатывать, описано в документации. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:00 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
IFKА в Deleted не будет больше одной записи, потому как триггер должен срабатывать на изменение каждой записи в одном поле из перечисленных. Триггера в MSSQL срабатывают один раз на событие. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:00 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
IFKstep_ksдля начала написать так, чтобы триггер хотя бы потенциально правильно работал, когда в deleted > 1 записи и изменения были в более, чем в одном поле. А в Deleted не будет больше одной записи, потому как триггер должен срабатывать на изменение каждой записи в одном поле из перечисленных. Это не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:01 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
DeColo®esIFKА в Deleted не будет больше одной записи, потому как триггер должен срабатывать на изменение каждой записи в одном поле из перечисленных.То, на что он должен срабатывать, описано в документации. Можно ссылку на документацию, где об этом сказано? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:02 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
ShakillIFKпропущено... А в Deleted не будет больше одной записи, потому как триггер должен срабатывать на изменение каждой записи в одном поле из перечисленных. если одной командой меняется сразу несколько записей и/или полей, триггер сработает один раз и в deleted будет несколько записей. в документации об этом есть У меня нет команды, которая меняет сразу несколько записей и/или полей. Этот триггер сделан для отслеживания изменений, вносимых пользователем вручную. Там, где может меняться сразу несколько записей/полей, я, естественно, делаю триггер по-другому. Задача стоит конкретно: передать в SQL запрос имя поля, которое определяется перед самим запросом. Как это сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:05 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
IFKУ меня нет команды, которая меняет сразу несколько записей и/или полей. Этот триггер сделан для отслеживания изменений, вносимых пользователем вручную. Там, где может меняться сразу несколько записей/полей, я, естественно, делаю триггер по-другому.Сначала напишем говнокод, потом будем его переписывать? Очень интересный подход. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:07 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
IFKЗадача стоит конкретно: передать в SQL запрос имя поля, которое определяется перед самим запросом. Как это сделать? Если вы все еще горите желаением усугубить код вашего триггера еще и динамическим запросом, то вам придется перегнать содержимое таблиц inserted/deleted, например, во временные таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:14 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
Гавриленко Сергей АлексеевичIFKУ меня нет команды, которая меняет сразу несколько записей и/или полей. Этот триггер сделан для отслеживания изменений, вносимых пользователем вручную. Там, где может меняться сразу несколько записей/полей, я, естественно, делаю триггер по-другому.Сначала напишем говнокод, потом будем его переписывать? Очень интересный подход. Товарищ, давайте не будем переходить на личности. Все здесь крутые хацкеры, я это понимаю. А вот понимают ли крутые хацкеры, что не все такие крутые как они и может быть вообще не хацкеры? И если человек просит помощи, то обычно он надеется получить вразумительный ответ, а не кидание какашками в ответ. Если Вам нечего сказать, кроме как "говнокод" - прошу помолчать. Хорошо? Спасибо большое. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:15 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
IFKТоварищ, давайте не будем переходить на личности. Все здесь крутые хацкеры, я это понимаю. А вот понимают ли крутые хацкеры, что не все такие крутые как они и может быть вообще не хацкеры? И если человек просит помощи, то обычно он надеется получить вразумительный ответ, а не кидание какашками в ответ. Если Вам нечего сказать, кроме как "говнокод" - прошу помолчать. Хорошо? Спасибо большое.Я про вашу личность и слова не сказал. Я говорил про ваш код и ваш подход к решению задачи. Что он плох, вам сказали все. Подумайте об этом. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:18 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
Решения для аудита до поля часто основываются на генераторах. За счет этого внутри триггера получается длинный, но статический код. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:18 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
GloryIFKЗадача стоит конкретно: передать в SQL запрос имя поля, которое определяется перед самим запросом. Как это сделать? Если вы все еще горите желаением усугубить код вашего триггера еще и динамическим запросом, то вам придется перегнать содержимое таблиц inserted/deleted, например, во временные таблицы. Горю, но что-то мне подсказывает, что по эффективности это будет равно ношению воды в решете. :-( Нельзя ли другим способом решить изначальную задачу? Задача состоит в выявлении изменений в конкретных полях и занесении этих изменений в таблицу протокола изменений. Поля указаны в триггере. Изменения вносятся вручную пользователями. Спасибо за любые подсказки! ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:19 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
Джоин инсертед и апдейтед по ПК где инсертед.поле <> апдейтед.поле Писать статический код для каждого поля. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:22 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
Гавриленко Сергей АлексеевичIFKТоварищ, давайте не будем переходить на личности. Все здесь крутые хацкеры, я это понимаю. А вот понимают ли крутые хацкеры, что не все такие крутые как они и может быть вообще не хацкеры? И если человек просит помощи, то обычно он надеется получить вразумительный ответ, а не кидание какашками в ответ. Если Вам нечего сказать, кроме как "говнокод" - прошу помолчать. Хорошо? Спасибо большое.Я про вашу личность и слова не сказал. Я говорил про ваш код и ваш подход к решению задачи. Что он плох, вам сказали все. Подумайте об этом. Хорошо, значит, я неправильно интерпретировал значение слова "говнокод" в приложении к моему случаю. Постараюсь употреблять это слово на форуме почаще - оказывается оно не имеет никакого отношения к личности. Если мой код плох для выполнения конкретной задачи - предложите Ваш вариант решения или хотя бы подскажите направление. Это и будет помощью, за которой люди обращаются на форум. Ну, кроме прояснения значения слова "говнокод"... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:24 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
IFKНельзя ли другим способом решить изначальную задачу? Задача состоит в выявлении изменений в конкретных полях и занесении этих изменений в таблицу протокола изменений. Поля указаны в триггере. Изменения вносятся вручную пользователями. Спасибо за любые подсказки! Что мешает написать имена полей явно ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:25 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
Программист-ЛюбительДжоин инсертед и апдейтед по ПК где инсертед.поле <> апдейтед.поле Писать статический код для каждого поля. Угу. Это мне было ясно с самого начала, но хотелось изящества и универсальности хоть какой-то. :-( ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:25 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
IFKGloryпропущено... Если вы все еще горите желаением усугубить код вашего триггера еще и динамическим запросом, то вам придется перегнать содержимое таблиц inserted/deleted, например, во временные таблицы. Горю, но что-то мне подсказывает, что по эффективности это будет равно ношению воды в решете. :-( Нельзя ли другим способом решить изначальную задачу? Задача состоит в выявлении изменений в конкретных полях и занесении этих изменений в таблицу протокола изменений. Поля указаны в триггере. Изменения вносятся вручную пользователями. Спасибо за любые подсказки! нечетатель, - 12803376 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:25 |
|
|
start [/forum/topic.php?fid=46&msg=37862844&tid=1711913]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 278ms |
0 / 0 |