SQL с версиями
Sep. 20th, 2010 09:59 amВроде бы простая задача а у Грубера не описана - я хочу для каждой строки в базе данных сохранять версии. Решение в лоб - вместо UPDATE - INSERT с обновленным таймстампом. Но тогда любая выборка превращается в адъ. Наверняка это популярная проблема а я просто лох, но все что я ни придумаю получается криво.
no subject
Date: 2010-09-20 05:08 pm (UTC)Борландовский Interbase, если я правильно помню, работает по такому принципу.
no subject
Date: 2010-09-20 05:26 pm (UTC)Я, конечно, не dba, но чтобы немного приуменьшить адъ, можно добавить флаг active row (indexed). Соответственно вместо update у нас будет update предыдущей active record to inactive и insert с новым TS/active.
no subject
Date: 2010-09-20 05:28 pm (UTC)Когда второй клиент попытается проделать такой же фокус, он получит сапогом в лоб :-)
no subject
Date: 2010-09-20 05:31 pm (UTC)ВМЕСТО
update t set timestamp ...., пишем
insert into t ('blah', 'blah', now())
no subject
Date: 2010-09-20 05:58 pm (UTC)no subject
Date: 2010-09-20 11:07 pm (UTC)no subject
Date: 2010-09-21 01:25 am (UTC)no subject
Date: 2010-09-21 10:40 am (UTC)