Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
astepanзадача следующая: создавать копии при каждом исменении записи в таблице. т. е. есть форма и когда кто-то меняет что-то в ней записывать в историю текущую и предыдущую запись. 1. способ созадать триггеры в SQL и при каждом изменеии(update/insert/delete) записывать в таблицу историю. 2. способ создать/подключить функцию в C# коде котораю при каждом update/insert/delete записывала в таблицу историю. хотелось бы услышать за и против каждого решения. спасибо.3. Прикрутить к Entity Framework DbContext универсальный механизм логирования любых объектов контекста БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 14:36 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
ИзопропилАлексей КА если логика в хранимых процедурах, то триггера удобны. то они не нужны +100500 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:07 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КOldValue таки лучше хранить. Из таблицы DocumentsHistory старые записи обычно удаляются. Это будет избыточно. Если решили удалить данные из DocumentsHistory, значит не нужна история. А если не нужна история, то какие могут быть вопросы к предыдущим значениям? :) Алексей КДля хранения лога в общем случае надо использовать EAV с типом данных nvarchar(max). Вот не нужны тут никакие универсальные маханихмы. Типы полей истории должны строго соответствовать оригиналам. Обобщение - зло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:11 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУАлексей КOldValue таки лучше хранить. Из таблицы DocumentsHistory старые записи обычно удаляются. Это будет избыточно. Если решили удалить данные из DocumentsHistory, значит не нужна история. А если не нужна история, то какие могут быть вопросы к предыдущим значениям? :)Ну не всё же удаляется. Удаляются записи старее, например, 7 суток. МСУАлексей КДля хранения лога в общем случае надо использовать EAV с типом данных nvarchar(max). Вот не нужны тут никакие универсальные маханихмы. Типы полей истории должны строго соответствовать оригиналам. Обобщение - зло.Не зло. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:18 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Shocker.Prowinsky!наверное. задайте.А мне не нужно, я уже попрыгал по этим граблям. Я использую триггеры в двух случаях: - заплатки к старой базе (которая вообще на MSSQL перетащена из Аксесса) - временная заплатка, для нормальной работы предыдущей версии клиентского приложения одновременно с новой (пока неспешно идет апгрейд пользователей до новой версии) и мне не нужно :) меня интересует мнение конкретных мемберов ЭТОЙ ветки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:18 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
я не говорю, что во всех случаях триггеры - идеальное решение. но почему многие считают их АБСОЛЮТНЫМ злом- непонятно, и хотелось бы увидеть аргументов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:20 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
зло не зло, но с триггерами нужно очень всё внимательно тестировать и правильно их применять. иногда это сложнее и многие не справляются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:22 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Andrey1306В таблице есть поле ModifyUserID ок, вопрос № 2. когда записи модифицирует супер-админ, они не должны попадать в историю. как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:24 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!и хотелось бы увидеть аргументов.Это нарушает правила форума. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:26 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Konst_Oneзло не зло, но с триггерами нужно очень всё внимательно тестировать и правильно их применять. иногда это сложнее и многие не справляются set nocount on поставить в триггере это сложно, да... Какие там ещё особенности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:27 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Konst_Oneзло не зло, но с триггерами нужно очень всё внимательно тестировать и правильно их применять. иногда это сложнее и многие не справляются в общем - пожалуй соглашусь в сценарии Table -> logTable, где в лог таблицу добавлением пишутся изменения - все до предела просто. у меня где-то даже был скрипт, который для любой таблицы создавал триггеры и таблицу логгирования... это конечно удобно только в сценариях, когда в контексте запроса известен конкретный пользователь. поскольку у меня долгое время для многих решений именно такой сценарий и работал, задача реашалась на ура. поэтому триггеры, они, может и зло, но не абсолютное :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:28 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttAndrey1306В таблице есть поле ModifyUserID ок, вопрос № 2. когда записи модифицирует супер-админ, они не должны попадать в историю. как? такой себе сценарий ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:30 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КKonst_Oneзло не зло, но с триггерами нужно очень всё внимательно тестировать и правильно их применять. иногда это сложнее и многие не справляются set nocount on поставить в триггере это сложно, да... Какие там ещё особенности? ну некоторые не в курсе , что inserted - это массив строк , например. а ещё триггеры разные ведь бывают и каскады из триггеров бывают очень нетривиальные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:30 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей Кwinsky!и хотелось бы увидеть аргументов.Это нарушает правила форума. ну да. я забыл, отсутствовал какое-то время :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:30 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
winsky!hVosttпропущено... ок, вопрос № 2. когда записи модифицирует супер-админ, они не должны попадать в историю. как? такой себе сценарий ну так как, с триггерами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:30 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей Ку не всё же удаляется. Удаляются записи старее, например, 7 суток. Ну значит мы всегда будем знать прошлое значение. Зачем его где-то еще хранить? Есть DocumentsHistory с полями истории. Этого 100% достаточно. Алексей КВот не нужны тут никакие универсальные маханихмы. Типы полей истории должны строго соответствовать оригиналам. Обобщение - зло.Не зло. :-)[/quot] Спорщик! ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:31 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttwinsky!пропущено... такой себе сценарий ну так как, с триггерами? да так же как и везде, есть такое слово Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:31 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Konst_OneАлексей Кпропущено... set nocount on поставить в триггере это сложно, да... Какие там ещё особенности? ну некоторые не в курсе , что inserted - это массив строк , например. а ещё триггеры разные ведь бывают и каскады из триггеров бывают очень нетривиальныеНу любой инструмент надо сначала изучить, потом использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:32 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
МСУАлексей Ку не всё же удаляется. Удаляются записи старее, например, 7 суток. Ну значит мы всегда будем знать прошлое значение. Зачем его где-то еще хранить? Есть DocumentsHistory с полями истории. Этого 100% достаточно.Потому что у меня в настоящее время работает такое решение, и оно мне не нравится. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:34 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Konst_Oneпропущено... ну некоторые не в курсе , что inserted - это массив строк , например. а ещё триггеры разные ведь бывают и каскады из триггеров бывают очень нетривиальныенекоторые, и даже очень многие, не в курсе, что существует MS SQL Server. не будем его использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:34 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КKonst_Oneпропущено... ну некоторые не в курсе , что inserted - это массив строк , например. а ещё триггеры разные ведь бывают и каскады из триггеров бывают очень нетривиальныеНу любой инструмент надо сначала изучить, потом использовать. ну так об этом и речь. поэтому для многих (кто не до конца изучил), триггеры - зло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:34 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Алексей КМСУпропущено... Ну значит мы всегда будем знать прошлое значение. Зачем его где-то еще хранить? Есть DocumentsHistory с полями истории. Этого 100% достаточно.Потому что у меня в настоящее время работает такое решение, и оно мне не нравится. :-) +100500 у меня, ну уже не у меня, но работает несколько решений достаточно активно использующих описанный мной сценарий - никаких нареканий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:35 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
Konst_OneАлексей Кпропущено... Ну любой инструмент надо сначала изучить, потом использовать. ну так об этом и речь. поэтому для многих (кто не до конца изучил), триггеры - зло Согласен. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:36 |
|
||
|
способы записи в таблицу историю
|
|||
|---|---|---|---|
|
#18+
hVosttAndrey1306В таблице есть поле ModifyUserID ок, вопрос № 2. когда записи модифицирует супер-админ, они не должны попадать в историю. как? ну во первых не чего ему там править, а во вторых DEFAULT (suser_sname()) FOR [SrvUserName] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2014, 15:37 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=38780152&tid=1356925]: |
0ms |
get settings: |
9ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
28ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 307ms |
| total: | 417ms |

| 0 / 0 |
