Страница 1 из 1
Создание таблицы (-:
Добавлено: 16 мар 2005, 16:54
PrettyFly
Всем привет!
Можно ли создать таблицу, и не делая commit транзакции начать с ней работать (в этой же транзакции)? У меня почему-то не получается...
Добавлено: 16 мар 2005, 18:31
Merlin
И правильно, что не получается. А то иногда получается, а потом базу в помойку несёшь.
Добавлено: 18 мар 2005, 10:48
PrettyFly
Не понимаю, почему ты так считаешь? У меня идея такая: Нужно провести обновление программы с версии на версию, при этом происходит обновление базы (добавляются таблицы, изменяются существующие, заносятся данные). Если вдруг при обновлении произошла ошибка, то дролжен произойти полный откат к исходной версии... А для этого нужно всё делать в одной транзакции, и подтверждать её только при успешном завершении обновления.
... зачем после этого базу в помойку нести?
Добавлено: 18 мар 2005, 11:05
MuirsheenDurkin
PrettyFly писал(а):Нужно провести обновление программы с версии на версию
Задача решается так. Сначала бэкап базы, ресторим этот бэкап в другое место, потом потом накатываем туда DDL, потом commit, потом DML и опять commit. Потом удаляем старую базу и кладем на ее место новую. Это самый простой и дешевый путь, imho.
Добавлено: 18 мар 2005, 12:38
Merlin
PrettyFly писал(а):Не понимаю, почему ты так считаешь?
... зачем после этого базу в помойку нести?
Я не считаю, я знаю. Собственно выполнение DDL-операторов, в отличие от DML, осуществляется на Commit, а до того осуществляется только запись данных для выполнения в системные таблицы, которые на самом деле не самодостаточный объект, а всего лишь интерфейс к внутренним структурам. DML над полусозданным объектом может приводить к весьма забавным результатам. Насчёт как надо - согласен с предыдущим оратором.