|
|
|
Восстановление логически удаленных записей
|
|||
|---|---|---|---|
|
#18+
2 _мод > 1. журналирование только с целью аудита Поясните > 2. изменения не таблиц БД , а прикладных объектов Что подразумевается под прикладными объектами? > 3 сохранять было-стало Так то, что стало и так сохраняется в рабочей таблице? > 4 сохранять не коды, а понятные тексты Вот я и спрашиваю, как же мне это сделать > все в одной таблице аудита Ну да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2008, 18:25 |
|
||
|
Восстановление логически удаленных записей
|
|||
|---|---|---|---|
|
#18+
КД > 1. журналирование только с целью аудита Поясните Т.е. журнал не используется для восстановления состояния объекта на дату. Для этого есть история объектов. КД Что подразумевается под прикладными объектами? Журнал читает конечный пользователь, для него таблиц БД не существует, только объекты. Например, сотрудник - это не строка в БД, а объект со свойствами. КД Так то, что стало и так сохраняется в рабочей таблице? Так изменений-то может быть много, а история состояний объекта может и не хранится. КД > 4 сохранять не коды, а понятные тексты Вот я и спрашиваю, как же мне это сделать В журнал записывать видимые тексты, т.е. не код товара, а его шифр+наименование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 09:38 |
|
||
|
Восстановление логически удаленных записей
|
|||
|---|---|---|---|
|
#18+
> Т.е. журнал не используется для восстановления состояния объекта на дату. Для этого есть история объектов. Не, восстанавливать ничего не будем, это обсудили. Только посмотрим, кто чего навертел. > Журнал читает конечный пользователь, для него таблиц БД не существует, только объекты. Например, сотрудник - это не строка в БД, а объект со свойствами. Это ясно. > Так изменений-то может быть много, а история состояний объекта может и не хранится. А чем тогда изменение отличается от истории состояния? Изменение затрагивает один атрибут, а состояние - это все атрибуты? Если так, то задача ставится так, что надо посмотреть именно изменение одного атрибута. Написал, и задумался, а что, если и состояния тоже? > В журнал записывать видимые тексты, т.е. не код товара, а его шифр+наименование. В одно поле общей таблицы истории, предназначенное для этого, можно сделать конкатенацию, только вот смысл? Тогда может хватит и наименования? Все равно код ни о чем не скажет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2008, 18:16 |
|
||
|
Восстановление логически удаленных записей
|
|||
|---|---|---|---|
|
#18+
КДА чем тогда изменение отличается от истории состояния? Лично я храню и журнал для аудита и историю состояний объекта. Дело в том что в журнал записываются все изменения, а история сохраняется не всегда, а только когда действительно надо. КДТогда может хватит и наименования? Все равно код ни о чем не скажет... Часто полное наименование объекта состоит из шифра+имени (шифр<>ID). Например: АБС-123 Колесо большое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2008, 09:55 |
|
||
|
Восстановление логически удаленных записей
|
|||
|---|---|---|---|
|
#18+
Мой вариант журнала для истории изменений приемлем для выполнения вышеобозначенной задачи? Если можно, опишите варианты, которые используете Вы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2008, 18:56 |
|
||
|
Восстановление логически удаленных записей
|
|||
|---|---|---|---|
|
#18+
КДЕсли можно, опишите варианты, которые используете Вы. Журнал аудита: 1. создание объекта: кто, когда 2. изменение св-ва объекта: кто, когда, имя св-ва, было, стало 3. удаление объекта: перенос объекта в список удаленных + кто, когда + по каждому объекту ведется история его версий: текущая версия + история по датам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2008, 09:34 |
|
||
|
Восстановление логически удаленных записей
|
|||
|---|---|---|---|
|
#18+
Всех с прошедшим праздником! 2 _мод Спасибо большое! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2008, 06:47 |
|
||
|
Восстановление логически удаленных записей
|
|||
|---|---|---|---|
|
#18+
Вот еще один вопрос по таблице изменений. Я думаю, что, помимо сохраненного значения поля, надо еще заносить информацию о промежутке времени, когда оно таковым было. Можно было бы хранить просто дату создания записи, и тогда мы бы знали дату, ДО которой значение было таким. Но если нам потребуется знать каким значение этого поля этой записи было на такую-то дату, придется делать вывернутый запрос. В тоже время если сделать поле в исторической таблице С_КАКОЙ_ДАТЫ, то я не знаю, как вставить эту информацию. Или все-таки через запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2008, 17:38 |
|
||
|
Восстановление логически удаленных записей
|
|||
|---|---|---|---|
|
#18+
Никто ничего не посоветует? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2008, 18:31 |
|
||
|
Восстановление логически удаленных записей
|
|||
|---|---|---|---|
|
#18+
КДНикто ничего не посоветует? С датами поосторожнее. Простой пример: exec :a := sysdate insert into t (dt) values (:a); некоторое время тото там делаем, при этом в силу изоляции транзакций наш insert никто не видит. exec :b := sysdate insert into t (dt) values (:b); commit; записи с датами :a и :b стали видны одновременно, однако ни значение :b ни тем более значение :a не отражают время, когда они стали видны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2008, 02:10 |
|
||
|
Восстановление логически удаленных записей
|
|||
|---|---|---|---|
|
#18+
КДНикто ничего не посоветует? Дата ДО или дата С - это одно и тоже. Для дата ДО запрос простой: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2008, 10:58 |
|
||
|
Восстановление логически удаленных записей
|
|||
|---|---|---|---|
|
#18+
_мод КДНикто ничего не посоветует? Дата ДО или дата С - это одно и тоже. Для дата ДО запрос простой: Код: plaintext 1. Простой, пока нужно найти только одну запись. Дата ДО редко бывает известна заранее, и даже если известна, то не факт что она со временем не измениться. Дата С как правило отражает свершившийся факт и меняется только по причине исправления ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2008, 04:49 |
|
||
|
Восстановление логически удаленных записей
|
|||
|---|---|---|---|
|
#18+
2 mcureenab > некоторое время тото там делаем, при этом в силу изоляции транзакций наш insert никто не видит. У нас 2 операции: 1 – UPDATE какого-то поля какой-то записи какой-то таблицы, 2 – INSERT старого значения этого поля этой записи этой таблицы в таблицу истории. То, что не виден INSERT в историческую таблицу – не так уж важно. Хуже другое – что не видно UPDATE. И даже не только из-за изоляции транзакций, а потому что данные в формах обновляются не мгновенно (или эту проблему надо решать отдельно). 2 _mod >> Для дата ДО запрос простой: > Простой, пока нужно найти только одну запись (mcureenab). Точно. Думаете, я зря написал "вывернутый запрос" в своем посте от 8.03.? Пока в голову приходит только процедурный вариант. Ищем в исторической таблице запись where ТАБЛИЦА = наша_таблица, ПОЛЕ = наше_поле, ЗАПИСЬ = наша_запись, ДАТА_СОЗДАНИЯ_ЗАПИСИ = max. Если таких записей еще нет, то 2 варианта: 1. если мы заполняем пустое поле, то значением С_КАКОЙ_ДАТЫ становится текущий момент времени (если, конечно, никого особо не интересуют значения Null); 2. если одно значение поля меняем на другое, то значением С_КАКОЙ_ДАТЫ становится значение даты создания объекта (т.е. записи в нашей_таблице). Если же запись есть, то значением С_КАКОЙ_ДАТЫ становится значение даты, когда была создана найденная запись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2008, 18:40 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35179574&tid=1543985]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
158ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 261ms |
| total: | 509ms |

| 0 / 0 |
