powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Динамический SQL в триггере
22 сообщений из 47, страница 2 из 2
Динамический SQL в триггере
    #37862851
Мистер Хенки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IFKGloryпропущено...

Если вы все еще горите желаением усугубить код вашего триггера еще и динамическим запросом, то вам придется перегнать содержимое таблиц inserted/deleted, например, во временные таблицы.

Горю, но что-то мне подсказывает, что по эффективности это будет равно ношению воды в решете. :-(
Нельзя ли другим способом решить изначальную задачу? Задача состоит в выявлении изменений в конкретных полях и занесении этих изменений в таблицу протокола изменений. Поля указаны в триггере. Изменения вносятся вручную пользователями. Спасибо за любые подсказки!
может лучше не удалять и изменять записи, а каждый раз инсертить новую с статусом актуальная, а предыдущую переводить в статус архив. Ну и так далее, в общем думаю идея понятна
...
Рейтинг: 0 / 0
Динамический SQL в триггере
    #37862852
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IFKно хотелось изящества и универсальности хоть какой-то.
Для чего универсальности ? Чтобы медленнее работало ?
...
Рейтинг: 0 / 0
Динамический SQL в триггере
    #37862861
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
Мистер ХенкиIFKпропущено...


Горю, но что-то мне подсказывает, что по эффективности это будет равно ношению воды в решете. :-(
Нельзя ли другим способом решить изначальную задачу? Задача состоит в выявлении изменений в конкретных полях и занесении этих изменений в таблицу протокола изменений. Поля указаны в триггере. Изменения вносятся вручную пользователями. Спасибо за любые подсказки!
может лучше не удалять и изменять записи, а каждый раз инсертить новую с статусом актуальная, а предыдущую переводить в статус архив. Ну и так далее, в общем думаю идея понятна

Идея понятна. Но если в таблице 20000 записей, и изменения в полях одной и той же записи происходят несколько раз на дню, то архивная таблица будет очень быстро переполнена ненужными копиями одной и той же записи с изменениями в разных полях. Отследить эти изменения впоследствии будет довольно сложно.
...
Рейтинг: 0 / 0
Динамический SQL в триггере
    #37862864
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
GloryIFKно хотелось изящества и универсальности хоть какой-то.
Для чего универсальности ? Чтобы медленнее работало ?

Нет, чтобы выглядело красивее...
...
Рейтинг: 0 / 0
Динамический SQL в триггере
    #37862868
Фотография Anatoly Podgoretsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IFKХорошо, значит, я неправильно интерпретировал значение слова "говнокод" в приложении к моему случаю. Постараюсь употреблять это слово на форуме почаще - оказывается оно не имеет никакого отношения к личности.
Разницу между - ты дурак и код дурацкий понимаем или нет?
...
Рейтинг: 0 / 0
Динамический SQL в триггере
    #37862871
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все уже давно украдено до нас. Изучайте: http://www.sql.ru/articles/mssql/2005/030701changeslogging.shtml
...
Рейтинг: 0 / 0
Динамический SQL в триггере
    #37862876
Мистер Хенки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IFKМистер Хенкипропущено...

может лучше не удалять и изменять записи, а каждый раз инсертить новую с статусом актуальная, а предыдущую переводить в статус архив. Ну и так далее, в общем думаю идея понятна

Идея понятна. Но если в таблице 20000 записей, и изменения в полях одной и той же записи происходят несколько раз на дню, то архивная таблица будет очень быстро переполнена ненужными копиями одной и той же записи с изменениями в разных полях. Отследить эти изменения впоследствии будет довольно сложно.
При таком подходе можно изменять сразу запись, а не только отдельные ее поля. Отследить тоже не проблема.
...
Рейтинг: 0 / 0
Динамический SQL в триггере
    #37862887
Фотография Ken@t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IFKGloryпропущено...

Для чего универсальности ? Чтобы медленнее работало ?

Нет, чтобы выглядело красивее...
Хм. кому ? Есть хранение данных, есть их представление или вы и это в одну кучу мешаете. Из пракитики , сделайте таблицу лога с структурой базовой таблицы + 3 поля : Состояние U I D, дату изменения и принципала. Это покроет все ваши хотелки. Чистите её по необходимости.
...
Рейтинг: 0 / 0
Динамический SQL в триггере
    #37862931
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
Anatoly PodgoretskyIFKХорошо, значит, я неправильно интерпретировал значение слова "говнокод" в приложении к моему случаю. Постараюсь употреблять это слово на форуме почаще - оказывается оно не имеет никакого отношения к личности.
Разницу между - ты дурак и код дурацкий понимаем или нет?

Понимаю, поэтому и предполагаю, что выражение "говнокод" подразумевает, что написавший его есть дурак, иными словами. Приведу пример: как вы, уважаемый, отреагируете на слова "вы производите говнорезультат"? Что, неужели скажете, что это косвеным образом не унижает ваше достоинство? Или, может быть, все-таки лучше будет, если вам скажут "ваш результат неудовлетворительный, потому что ..."? Есть разница или нет?
...
Рейтинг: 0 / 0
Динамический SQL в триггере
    #37862936
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
Мистер ХенкиIFKпропущено...


Идея понятна. Но если в таблице 20000 записей, и изменения в полях одной и той же записи происходят несколько раз на дню, то архивная таблица будет очень быстро переполнена ненужными копиями одной и той же записи с изменениями в разных полях. Отследить эти изменения впоследствии будет довольно сложно.
При таком подходе можно изменять сразу запись, а не только отдельные ее поля. Отследить тоже не проблема.

А мне не нужно изменять сразу всю запись. Нафига, если изменяется только одно поле, скажем результат опыта/проверки? Или изменяется только номер опыта.
...
Рейтинг: 0 / 0
Динамический SQL в триггере
    #37862941
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
Ken@tIFKпропущено...


Нет, чтобы выглядело красивее...
Хм. кому ? Есть хранение данных, есть их представление или вы и это в одну кучу мешаете. Из пракитики , сделайте таблицу лога с структурой базовой таблицы + 3 поля : Состояние U I D, дату изменения и принципала. Это покроет все ваши хотелки. Чистите её по необходимости.

Отлично, так и делаю, если у меня только одна таблица, по которой нужно отслеживать изменения. Но впоследствии мне нужно растиражировать этот триггер (с изменениями, разумеется) и на другие таблицы, которые необходимо отслеживать. А в этих других таблицах полей для отслеживания намного больше - для этого и требуется некоторая универсальность триггера, о чем я и писал.
...
Рейтинг: 0 / 0
Динамический SQL в триггере
    #37862943
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IFKПонимаю, поэтому и предполагаю, что выражение "говнокод" подразумевает, что написавший его есть дурак, иными словами.Может и такое быть, но не обязательно.
IFKПриведу пример: как вы, уважаемый, отреагируете на слова "вы производите говнорезультат"Смотря чьи слова, и смотря как эти слова будут расходиться с моей собственной оценкой этого результата.
IFKИли, может быть, все-таки лучше будет, если вам скажут "ваш результат неудовлетворительный, потому что ..."? Есть разница или нет?Извините, но на форуме никто не должен с вами нянькаться. Если вы не в состоянии рассмотреть за формой то, что вам пытаются сообщить, то это исключительно ваши проблемы.
...
Рейтинг: 0 / 0
Динамический SQL в триггере
    #37862952
Фотография Ken@t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IFKKen@tпропущено...

Хм. кому ? Есть хранение данных, есть их представление или вы и это в одну кучу мешаете. Из пракитики , сделайте таблицу лога с структурой базовой таблицы + 3 поля : Состояние U I D, дату изменения и принципала. Это покроет все ваши хотелки. Чистите её по необходимости.

Отлично, так и делаю, если у меня только одна таблица, по которой нужно отслеживать изменения. Но впоследствии мне нужно растиражировать этот триггер (с изменениями, разумеется) и на другие таблицы, которые необходимо отслеживать. А в этих других таблицах полей для отслеживания намного больше - для этого и требуется некоторая универсальность триггера, о чем я и писал.

Это всё делается генератором по шаблону и структуре таблицы из INFORMATION_SCHEMA.TABLES
...
Рейтинг: 0 / 0
Динамический SQL в триггере
    #37862962
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
Гавриленко Сергей АлексеевичIFKПонимаю, поэтому и предполагаю, что выражение "говнокод" подразумевает, что написавший его есть дурак, иными словами.Может и такое быть, но не обязательно.
IFKПриведу пример: как вы, уважаемый, отреагируете на слова "вы производите говнорезультат"Смотря чьи слова, и смотря как эти слова будут расходиться с моей собственной оценкой этого результата.
IFKИли, может быть, все-таки лучше будет, если вам скажут "ваш результат неудовлетворительный, потому что ..."? Есть разница или нет?Извините, но на форуме никто не должен с вами нянькаться. Если вы не в состоянии рассмотреть за формой то, что вам пытаются сообщить, то это исключительно ваши проблемы.

А я и не прошу нянькатся. Я прошу выбирать выражения и высказываться по существу. Нечего сказать - молчи. Что, много прошу или это как-то расходится с общепринятыми правилами общения?
...
Рейтинг: 0 / 0
Динамический SQL в триггере
    #37862964
AnaceH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Автор, чем мой вариант с unpivot не подходит для ваших нужд?
...
Рейтинг: 0 / 0
Динамический SQL в триггере
    #37862965
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
Ken@tIFKпропущено...


Отлично, так и делаю, если у меня только одна таблица, по которой нужно отслеживать изменения. Но впоследствии мне нужно растиражировать этот триггер (с изменениями, разумеется) и на другие таблицы, которые необходимо отслеживать. А в этих других таблицах полей для отслеживания намного больше - для этого и требуется некоторая универсальность триггера, о чем я и писал.

Это всё делается генератором по шаблону и структуре таблицы из INFORMATION_SCHEMA.TABLES

А можно с этого места поподробнее?
...
Рейтинг: 0 / 0
Динамический SQL в триггере
    #37862967
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
AnaceHАвтор, чем мой вариант с unpivot не подходит для ваших нужд?

Еще не знаю - разбираюсь. :-)
...
Рейтинг: 0 / 0
Динамический SQL в триггере
    #37863048
RubinDm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IFKKen@tпропущено...
Это всё делается генератором по шаблону и структуре таблицы из INFORMATION_SCHEMA.TABLES
А можно с этого места поподробнее?
Все ваши тригеры будут однотипными... написание кода таких триггеров можно автоматизировать. Для этого надо написать генератор строки с кодом t-sql, функцию, что-то типа
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create function GenHistoryTrigger
  (  @tableName nvarchar(128)
  ) returns nvarchar(max)
as
begin
  declare @tsql nvarchar(max) = 'create trigger ' + @tableName_Histoty + ' on ' + @tableName;
  set @tsql = @tsql + ...
  return @tsql;
end
go
...
Рейтинг: 0 / 0
Динамический SQL в триггере
    #37863061
Klick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IFK для этого и требуется некоторая универсальность триггера, о чем я и писал.

Код: sql
1.
Set @field='cpa_Decision'


Мега-универсально! )))

А вообще тут несколько веток обсуждения было по теме "логирования", где все разжевано с примерами. Научитесь пользоваться поиском.
...
Рейтинг: 0 / 0
Динамический SQL в триггере
    #37863066
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
KlickIFK для этого и требуется некоторая универсальность триггера, о чем я и писал.

Код: sql
1.
Set @field='cpa_Decision'


Мега-универсально! )))

А вообще тут несколько веток обсуждения было по теме "логирования", где все разжевано с примерами. Научитесь пользоваться поиском.

Зашибись. Именно вашего разрешения пользоваться поиском я и ждал. Спасибо, теперь уж конечно, когда высочайшее разрешение получено... Почему бы и нет.
...
Рейтинг: 0 / 0
Динамический SQL в триггере
    #37863248
Klick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IFK,

Готовые решения:
Один Два Три
Свои "запилить", на основе этих, легкотня.

OFF_TOP: IFK, а вы знатный грубиян, оказывается... :(
...
Рейтинг: 0 / 0
Динамический SQL в триггере
    #37863264
IFK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IFK
Гость
KlickIFK,

Готовые решения:
Один Два Три
Свои "запилить", на основе этих, легкотня.

OFF_TOP: IFK, а вы знатный грубиян, оказывается... :(

За примеры спасибо. Буду разбираться.
Оф-топ: пардон, не я начал. На неадекватные высказывания считаю себя вправе реагировать также неадекватно. Так сказать "ассиметричный ответ" (с) Путин или кто там еще.
...
Рейтинг: 0 / 0
22 сообщений из 47, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Динамический SQL в триггере
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]