Создание таблицы (-:

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
PrettyFly
Сообщения: 2
Зарегистрирован: 16 мар 2005, 16:38

Создание таблицы (-:

Сообщение PrettyFly » 16 мар 2005, 16:54

Всем привет!

Можно ли создать таблицу, и не делая commit транзакции начать с ней работать (в этой же транзакции)? У меня почему-то не получается...
Последний раз редактировалось PrettyFly 16 мар 2005, 17:08, всего редактировалось 1 раз.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 16 мар 2005, 18:31

И правильно, что не получается. А то иногда получается, а потом базу в помойку несёшь.

PrettyFly
Сообщения: 2
Зарегистрирован: 16 мар 2005, 16:38

Сообщение PrettyFly » 18 мар 2005, 10:48

Не понимаю, почему ты так считаешь? У меня идея такая: Нужно провести обновление программы с версии на версию, при этом происходит обновление базы (добавляются таблицы, изменяются существующие, заносятся данные). Если вдруг при обновлении произошла ошибка, то дролжен произойти полный откат к исходной версии... А для этого нужно всё делать в одной транзакции, и подтверждать её только при успешном завершении обновления.

... зачем после этого базу в помойку нести?

MuirsheenDurkin
Сообщения: 44
Зарегистрирован: 21 янв 2005, 10:18

Сообщение MuirsheenDurkin » 18 мар 2005, 11:05

PrettyFly писал(а):Нужно провести обновление программы с версии на версию
Задача решается так. Сначала бэкап базы, ресторим этот бэкап в другое место, потом потом накатываем туда DDL, потом commit, потом DML и опять commit. Потом удаляем старую базу и кладем на ее место новую. Это самый простой и дешевый путь, imho.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 18 мар 2005, 12:38

PrettyFly писал(а):Не понимаю, почему ты так считаешь?
... зачем после этого базу в помойку нести?
Я не считаю, я знаю. Собственно выполнение DDL-операторов, в отличие от DML, осуществляется на Commit, а до того осуществляется только запись данных для выполнения в системные таблицы, которые на самом деле не самодостаточный объект, а всего лишь интерфейс к внутренним структурам. DML над полусозданным объектом может приводить к весьма забавным результатам. Насчёт как надо - согласен с предыдущим оратором.

Ответить