|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
IFKGloryпропущено... Если вы все еще горите желаением усугубить код вашего триггера еще и динамическим запросом, то вам придется перегнать содержимое таблиц inserted/deleted, например, во временные таблицы. Горю, но что-то мне подсказывает, что по эффективности это будет равно ношению воды в решете. :-( Нельзя ли другим способом решить изначальную задачу? Задача состоит в выявлении изменений в конкретных полях и занесении этих изменений в таблицу протокола изменений. Поля указаны в триггере. Изменения вносятся вручную пользователями. Спасибо за любые подсказки! может лучше не удалять и изменять записи, а каждый раз инсертить новую с статусом актуальная, а предыдущую переводить в статус архив. Ну и так далее, в общем думаю идея понятна ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:26 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
IFKно хотелось изящества и универсальности хоть какой-то. Для чего универсальности ? Чтобы медленнее работало ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:26 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
Мистер ХенкиIFKпропущено... Горю, но что-то мне подсказывает, что по эффективности это будет равно ношению воды в решете. :-( Нельзя ли другим способом решить изначальную задачу? Задача состоит в выявлении изменений в конкретных полях и занесении этих изменений в таблицу протокола изменений. Поля указаны в триггере. Изменения вносятся вручную пользователями. Спасибо за любые подсказки! может лучше не удалять и изменять записи, а каждый раз инсертить новую с статусом актуальная, а предыдущую переводить в статус архив. Ну и так далее, в общем думаю идея понятна Идея понятна. Но если в таблице 20000 записей, и изменения в полях одной и той же записи происходят несколько раз на дню, то архивная таблица будет очень быстро переполнена ненужными копиями одной и той же записи с изменениями в разных полях. Отследить эти изменения впоследствии будет довольно сложно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:30 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
GloryIFKно хотелось изящества и универсальности хоть какой-то. Для чего универсальности ? Чтобы медленнее работало ? Нет, чтобы выглядело красивее... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:31 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
IFKХорошо, значит, я неправильно интерпретировал значение слова "говнокод" в приложении к моему случаю. Постараюсь употреблять это слово на форуме почаще - оказывается оно не имеет никакого отношения к личности. Разницу между - ты дурак и код дурацкий понимаем или нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:32 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
Все уже давно украдено до нас. Изучайте: http://www.sql.ru/articles/mssql/2005/030701changeslogging.shtml ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:33 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
IFKМистер Хенкипропущено... может лучше не удалять и изменять записи, а каждый раз инсертить новую с статусом актуальная, а предыдущую переводить в статус архив. Ну и так далее, в общем думаю идея понятна Идея понятна. Но если в таблице 20000 записей, и изменения в полях одной и той же записи происходят несколько раз на дню, то архивная таблица будет очень быстро переполнена ненужными копиями одной и той же записи с изменениями в разных полях. Отследить эти изменения впоследствии будет довольно сложно. При таком подходе можно изменять сразу запись, а не только отдельные ее поля. Отследить тоже не проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:34 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
IFKGloryпропущено... Для чего универсальности ? Чтобы медленнее работало ? Нет, чтобы выглядело красивее... Хм. кому ? Есть хранение данных, есть их представление или вы и это в одну кучу мешаете. Из пракитики , сделайте таблицу лога с структурой базовой таблицы + 3 поля : Состояние U I D, дату изменения и принципала. Это покроет все ваши хотелки. Чистите её по необходимости. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 13:36 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
Anatoly PodgoretskyIFKХорошо, значит, я неправильно интерпретировал значение слова "говнокод" в приложении к моему случаю. Постараюсь употреблять это слово на форуме почаще - оказывается оно не имеет никакого отношения к личности. Разницу между - ты дурак и код дурацкий понимаем или нет? Понимаю, поэтому и предполагаю, что выражение "говнокод" подразумевает, что написавший его есть дурак, иными словами. Приведу пример: как вы, уважаемый, отреагируете на слова "вы производите говнорезультат"? Что, неужели скажете, что это косвеным образом не унижает ваше достоинство? Или, может быть, все-таки лучше будет, если вам скажут "ваш результат неудовлетворительный, потому что ..."? Есть разница или нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 14:06 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
Мистер ХенкиIFKпропущено... Идея понятна. Но если в таблице 20000 записей, и изменения в полях одной и той же записи происходят несколько раз на дню, то архивная таблица будет очень быстро переполнена ненужными копиями одной и той же записи с изменениями в разных полях. Отследить эти изменения впоследствии будет довольно сложно. При таком подходе можно изменять сразу запись, а не только отдельные ее поля. Отследить тоже не проблема. А мне не нужно изменять сразу всю запись. Нафига, если изменяется только одно поле, скажем результат опыта/проверки? Или изменяется только номер опыта. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 14:07 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
Ken@tIFKпропущено... Нет, чтобы выглядело красивее... Хм. кому ? Есть хранение данных, есть их представление или вы и это в одну кучу мешаете. Из пракитики , сделайте таблицу лога с структурой базовой таблицы + 3 поля : Состояние U I D, дату изменения и принципала. Это покроет все ваши хотелки. Чистите её по необходимости. Отлично, так и делаю, если у меня только одна таблица, по которой нужно отслеживать изменения. Но впоследствии мне нужно растиражировать этот триггер (с изменениями, разумеется) и на другие таблицы, которые необходимо отслеживать. А в этих других таблицах полей для отслеживания намного больше - для этого и требуется некоторая универсальность триггера, о чем я и писал. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 14:10 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
IFKПонимаю, поэтому и предполагаю, что выражение "говнокод" подразумевает, что написавший его есть дурак, иными словами.Может и такое быть, но не обязательно. IFKПриведу пример: как вы, уважаемый, отреагируете на слова "вы производите говнорезультат"Смотря чьи слова, и смотря как эти слова будут расходиться с моей собственной оценкой этого результата. IFKИли, может быть, все-таки лучше будет, если вам скажут "ваш результат неудовлетворительный, потому что ..."? Есть разница или нет?Извините, но на форуме никто не должен с вами нянькаться. Если вы не в состоянии рассмотреть за формой то, что вам пытаются сообщить, то это исключительно ваши проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 14:12 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
IFKKen@tпропущено... Хм. кому ? Есть хранение данных, есть их представление или вы и это в одну кучу мешаете. Из пракитики , сделайте таблицу лога с структурой базовой таблицы + 3 поля : Состояние U I D, дату изменения и принципала. Это покроет все ваши хотелки. Чистите её по необходимости. Отлично, так и делаю, если у меня только одна таблица, по которой нужно отслеживать изменения. Но впоследствии мне нужно растиражировать этот триггер (с изменениями, разумеется) и на другие таблицы, которые необходимо отслеживать. А в этих других таблицах полей для отслеживания намного больше - для этого и требуется некоторая универсальность триггера, о чем я и писал. Это всё делается генератором по шаблону и структуре таблицы из INFORMATION_SCHEMA.TABLES ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 14:18 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
Гавриленко Сергей АлексеевичIFKПонимаю, поэтому и предполагаю, что выражение "говнокод" подразумевает, что написавший его есть дурак, иными словами.Может и такое быть, но не обязательно. IFKПриведу пример: как вы, уважаемый, отреагируете на слова "вы производите говнорезультат"Смотря чьи слова, и смотря как эти слова будут расходиться с моей собственной оценкой этого результата. IFKИли, может быть, все-таки лучше будет, если вам скажут "ваш результат неудовлетворительный, потому что ..."? Есть разница или нет?Извините, но на форуме никто не должен с вами нянькаться. Если вы не в состоянии рассмотреть за формой то, что вам пытаются сообщить, то это исключительно ваши проблемы. А я и не прошу нянькатся. Я прошу выбирать выражения и высказываться по существу. Нечего сказать - молчи. Что, много прошу или это как-то расходится с общепринятыми правилами общения? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 14:23 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
Автор, чем мой вариант с unpivot не подходит для ваших нужд? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 14:24 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
Ken@tIFKпропущено... Отлично, так и делаю, если у меня только одна таблица, по которой нужно отслеживать изменения. Но впоследствии мне нужно растиражировать этот триггер (с изменениями, разумеется) и на другие таблицы, которые необходимо отслеживать. А в этих других таблицах полей для отслеживания намного больше - для этого и требуется некоторая универсальность триггера, о чем я и писал. Это всё делается генератором по шаблону и структуре таблицы из INFORMATION_SCHEMA.TABLES А можно с этого места поподробнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 14:24 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
AnaceHАвтор, чем мой вариант с unpivot не подходит для ваших нужд? Еще не знаю - разбираюсь. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 14:25 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
IFKKen@tпропущено... Это всё делается генератором по шаблону и структуре таблицы из INFORMATION_SCHEMA.TABLES А можно с этого места поподробнее? Все ваши тригеры будут однотипными... написание кода таких триггеров можно автоматизировать. Для этого надо написать генератор строки с кодом t-sql, функцию, что-то типа Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 15:07 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
IFK для этого и требуется некоторая универсальность триггера, о чем я и писал. Код: sql 1.
Мега-универсально! ))) А вообще тут несколько веток обсуждения было по теме "логирования", где все разжевано с примерами. Научитесь пользоваться поиском. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 15:13 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
KlickIFK для этого и требуется некоторая универсальность триггера, о чем я и писал. Код: sql 1.
Мега-универсально! ))) А вообще тут несколько веток обсуждения было по теме "логирования", где все разжевано с примерами. Научитесь пользоваться поиском. Зашибись. Именно вашего разрешения пользоваться поиском я и ждал. Спасибо, теперь уж конечно, когда высочайшее разрешение получено... Почему бы и нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 15:16 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
IFK, Готовые решения: Один Два Три Свои "запилить", на основе этих, легкотня. OFF_TOP: IFK, а вы знатный грубиян, оказывается... :( ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 16:32 |
|
Динамический SQL в триггере
|
|||
---|---|---|---|
#18+
KlickIFK, Готовые решения: Один Два Три Свои "запилить", на основе этих, легкотня. OFF_TOP: IFK, а вы знатный грубиян, оказывается... :( За примеры спасибо. Буду разбираться. Оф-топ: пардон, не я начал. На неадекватные высказывания считаю себя вправе реагировать также неадекватно. Так сказать "ассиметричный ответ" (с) Путин или кто там еще. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2012, 16:41 |
|
|
start [/forum/topic.php?fid=46&gotonew=1&tid=1711913]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
30ms |
get topic data: |
14ms |
get first new msg: |
9ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
others: | 241ms |
total: | 402ms |
0 / 0 |