![]() |
#11 |
Участник
|
Цитата:
Они строят забор там, где в нем все равно проломят дыру и будут шастать туда и сюда. Потому что людям надо! Бессмысленно строить забор так где нужен проход. Правильнее было бы предусмотреть удобный механизм отката изменений. Например в оракл есть удобный механизм флешбека. Просто пишешь запрос X++: SELECT * FROM SCHEMA.TABLENAME /* AS OF TIMESTAMP TO_TIMESTAMP('2017-06-30 12:50:00', 'YYYY-MM-DD HH24:MI:SS') */ A WHERE ... Если к тебе прибежал испуганный программист/админ/юзер - то просто берешь и пишешь X++: SELECT * FROM SCHEMA.TABLENAME /* AS OF TIMESTAMP TO_TIMESTAMP('2017-06-30 12:50:00', 'YYYY-MM-DD HH24:MI:SS') */ A WHERE ... AND NOT EXISTS ( SELECT 'x' FROM SCHEMA.TABLENAME B WHERE ( SUBSTR(NLS_LOWER(B.DATAAREAID),1,4) = SUBSTR(NLS_LOWER(A.DATAAREAID),1,4) AND B.recid = A.recid ) ) Ну может выполняешь несколько раз этот запрос с перечнем полей count(*) на разную дату время чтобы поймать лучше момент времени с которого ндао взять удаленные впоследствии данные. И затем восстанавливаешь их X++: INSERT INTO SCHEMA.TABLENAME ( FIELD1, FIELD2 ... ) SELECT FIELD1, FIELD2 ... FROM SCHEMA.TABLENAME /* AS OF TIMESTAMP TO_TIMESTAMP('2017-06-30 12:50:00', 'YYYY-MM-DD HH24:MI:SS') */ A WHERE ... AND NOT EXISTS ( SELECT 'x' FROM SCHEMA.TABLENAME B WHERE ( SUBSTR(NLS_LOWER(B.DATAAREAID),1,4) = SUBSTR(NLS_LOWER(A.DATAAREAID),1,4) AND B.recid = A.recid ) ) Как бы в SQL Server штатно такое сделать ? Вроде до сих пор нельзя. |
|
Теги |
#синдромвахтера, change tracking |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|