Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / способы записи в таблицу историю / 25 сообщений из 220, страница 1 из 9
16.10.2014, 21:11
    #38779130
astepan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
задача следующая: создавать копии при каждом исменении записи в таблице. т. е.
есть форма и когда кто-то меняет что-то в ней записывать в историю текущую и предыдущую запись.

1. способ созадать триггеры в SQL и при каждом изменеии(update/insert/delete) записывать в таблицу историю.
2. способ создать/подключить функцию в C# коде котораю при каждом update/insert/delete записывала в таблицу историю.


хотелось бы услышать за и против каждого решения.
спасибо.
...
Рейтинг: 0 / 0
16.10.2014, 21:29
    #38779140
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
Триггеры зло, только второй способ. Ну и вдобавок, хранить предыдущее значение не имеет смысла, мы не него всегда сможем выйти.
То есть имеем такую структуру:

1. Documents(DocumentId,Value1,Value2,Value3,...)
2. DocumentsHistory(DocumentId,Date,UserId,Value1,Value2,Value3,...)

Соответственно, по DocumentId мы можем поднять всю историю. Надобность хранить предыдущие значения (типа Value1Old,Value2Old,Value3Old) отпадает сама собой.
...
Рейтинг: 0 / 0
16.10.2014, 21:29
    #38779141
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
astepan,

добавь к опросу ещё вариант обновления хранимой процедурой
...
Рейтинг: 0 / 0
16.10.2014, 21:31
    #38779142
astepan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
Триггеры зло - можно пояснить почему?
...
Рейтинг: 0 / 0
16.10.2014, 21:34
    #38779147
astepan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
Изопропил,

а запускать процедуру ти имеешь ввиду откуда из кода или из триггера?
...
Рейтинг: 0 / 0
16.10.2014, 21:39
    #38779149
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
astepan,

я к этому варианту не призываю - просто демострирую ещё одну возможность, но ни в коем случае не из триггера

триггер - это костыль, последний шанс(чужое приложение, потеря исходников и т д)
...
Рейтинг: 0 / 0
16.10.2014, 21:43
    #38779152
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
astepanТриггеры зло - можно пояснить почему?
Просто верь на слово
...
Рейтинг: 0 / 0
16.10.2014, 21:45
    #38779157
astepan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
МСУ,

Поверить то я могу, :)

но хотелось бы услышать более веские причины
...
Рейтинг: 0 / 0
16.10.2014, 21:46
    #38779158
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
МСУastepanТриггеры зло - можно пояснить почему?
Просто верь на слово
чтоб убедиться достаточно разок на грабли наступить
...
Рейтинг: 0 / 0
16.10.2014, 21:51
    #38779162
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
astepanно хотелось бы услышать более веские причины
Да они банальны, как перья курицы. Выше дед Изопропил разжевал на пальцах.

Изопропилчтоб убедиться достаточно разок на грабли наступить
До некоторых, порой, не с первого раза доходит.
...
Рейтинг: 0 / 0
16.10.2014, 22:50
    #38779186
astepan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
МСУ,

Хочешь выразить свой ум урод?! наверное самый "умный" в классе?!
...
Рейтинг: 0 / 0
16.10.2014, 22:59
    #38779190
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
Поддерживаю предыдущих ораторов - триггеры - зло.

Причину объяснить действительно непросто. Ну вот ты купил в магазине хлеб, принес домой, а в сумке вместо хлеба пчела или кусок навоза. Как-то вот так.
...
Рейтинг: 0 / 0
16.10.2014, 23:05
    #38779193
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
Хотелось-бы предложить делать вставку IDENTITY тоже из приложения, как МАХ(ID) + 1, раз так не любим триггеры. Нарисуем функцию для этого.
...
Рейтинг: 0 / 0
16.10.2014, 23:09
    #38779196
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
Relic HunterХотелось-бы предложить делать вставку IDENTITY тоже из приложения, как МАХ(ID) + 1, раз так не любим триггеры. Нарисуем функцию для этого.
что за бред?
...
Рейтинг: 0 / 0
16.10.2014, 23:14
    #38779201
Relic Hunter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
Изопропил,

А вы думаете IDENTITY святым духом вставляется?
...
Рейтинг: 0 / 0
16.10.2014, 23:21
    #38779205
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
Relic HunterИзопропил,

А вы думаете IDENTITY святым духом вставляется?
приращение идентити не вызывает блокировки записей в таблице,
при откате транзакции значение идентити не откатывается
...
Рейтинг: 0 / 0
16.10.2014, 23:36
    #38779214
Andrey1306
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
ИзопропилRelic HunterИзопропил,

А вы думаете IDENTITY святым духом вставляется?
приращение идентити не вызывает блокировки записей в таблице,
при откате транзакции значение идентити не откатывается

Разве будет блокировка таблицы если в тригере inserted взять в другую таблицу вставить ?
...
Рейтинг: 0 / 0
16.10.2014, 23:44
    #38779222
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
Встроенный механизм Identity никак не является пользовательским механизмом триггеров, зачем вообще обсуждать этот вброс?
...
Рейтинг: 0 / 0
17.10.2014, 09:20
    #38779404
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
astepanМСУ, Хочешь выразить свой ум урод?! наверное самый "умный" в классе?!
Маленькая упоротая обезьянка, ты о чем?
...
Рейтинг: 0 / 0
17.10.2014, 10:01
    #38779457
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
astepanзадача следующая: создавать копии при каждом исменении записи в таблице. т. е.
есть форма и когда кто-то меняет что-то в ней записывать в историю текущую и предыдущую запись.

1. способ созадать триггеры в SQL и при каждом изменеии(update/insert/delete) записывать в таблицу историю.
2. способ создать/подключить функцию в C# коде котораю при каждом update/insert/delete записывала в таблицу историю.


хотелось бы услышать за и против каждого решения.
спасибо.
в enterprice ms sql версии есть capture data source механизм для этого - лучше его использовать
...
Рейтинг: 0 / 0
17.10.2014, 10:02
    #38779460
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
monstrUastepanзадача следующая: создавать копии при каждом исменении записи в таблице. т. е.
есть форма и когда кто-то меняет что-то в ней записывать в историю текущую и предыдущую запись.

1. способ созадать триггеры в SQL и при каждом изменеии(update/insert/delete) записывать в таблицу историю.
2. способ создать/подключить функцию в C# коде котораю при каждом update/insert/delete записывала в таблицу историю.


хотелось бы услышать за и против каждого решения.
спасибо.
в enterprice ms sql версии есть capture data source механизм для этого - лучше его использоватьИ чем он лучше?
...
Рейтинг: 0 / 0
17.10.2014, 10:27
    #38779489
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
skyANAmonstrUпропущено...

в enterprice ms sql версии есть capture data source механизм для этого - лучше его использоватьИ чем он лучше?

тем что там уже все реализовано и протестировано - можно просто пользоваться.
наворочена большая гора всего - и триггеры, и service broker и еще черт знает что.

не надо изобретать изобретения, которые уже сделаны до вас и протестированы - минимум напишите что-то похожее, а скорее всего по функционалу будет победнее.

хранение истории - задача по объему совсем не мелкая, и поэтому если вы хотите сэкономить время - проще пользоваться сделанным до вас.
...
Рейтинг: 0 / 0
17.10.2014, 11:07
    #38779551
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
monstrUнаворочена большая гора всего
Просто эпический аргумент, что сказать. Зачем мне экскаватор, если требуются только плоскогубцы?

monstrUи триггеры
На помойку.

monstrUи service broker
Тем более на помойку это убожество.

monstrUи еще черт знает что.
А это уж точно и даром не нужно.

monstrUхранение истории - задача по объему совсем не мелкая, и поэтому если вы хотите сэкономить время - проще пользоваться сделанным до вас.
Хранение истории - это тупая табличка с перечислением нужных полей в разрезе сущности, даты и пользователя. Проще даже нельзя придумать.
...
Рейтинг: 0 / 0
17.10.2014, 11:17
    #38779567
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
monstrUхранение истории - задача по объему совсем не мелкая, и поэтому если вы хотите сэкономить время - проще пользоваться сделанным до вас.

давай-ка отбросим эти бестолковые рассуждения и задумаемся, например, хотя бы о том, как ты в триггере будешь записывать в таблицу истории ID текущего пользователя, сделавшего изменение? ID пользователя приложения естественно, а не пользователя базы данных. как? расскажи неучам, великий гуру.
...
Рейтинг: 0 / 0
17.10.2014, 12:18
    #38779711
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
способы записи в таблицу историю
hVosttmonstrUхранение истории - задача по объему совсем не мелкая, и поэтому если вы хотите сэкономить время - проще пользоваться сделанным до вас.

давай-ка отбросим эти бестолковые рассуждения и задумаемся, например, хотя бы о том, как ты в триггере будешь записывать в таблицу истории ID текущего пользователя, сделавшего изменение? ID пользователя приложения естественно, а не пользователя базы данных. как? расскажи неучам, великий гуру.

1. change data capture http://msdn.microsoft.com/en-us/library/cc645937.aspx - если писать правильно
2. разве я собирался что-то куда-то записывать? я просто написал что есть такой пакет. если вас устраивает - можно пользоваться, нет - ну и нет
3. упаси боже кого учить - здоровье дороже.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / способы записи в таблицу историю / 25 сообщений из 220, страница 1 из 9
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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