Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.20;
Скачать: CL | DM;

Вниз

Как правильно делать транзакции при удалении/создании таблиц?   Найти похожие ветки 

 
Zelius ©   (2003-02-27 14:57) [0]

Хочу сделать что-то типа этого:

StartTransaction;
try
DropTable;
CreateTable;
OpenTable;
FillTable;
Commit;
except
Rollback;
raise;
end;

Но она не дает открыть таблицу после ее создания! Если транзакцию убрать, то все работает!


 
Johnmen ©   (2003-02-27 15:09) [1]

DDL команды (типа DROP, CREATE) выполняются вне контекста пользовательских транзакций.
Значит, здесь они не имеют никакого смысла...


 
ermserg ©   (2003-02-27 15:34) [2]

to Johnmen:
ne uveren. Vot takoye rabotayet na MSSQL2000 s OLE DB Provider:

ADOQuery1.Connection := ADOConnection1;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOConnection1.BeginTrans;
ADOQuery1.SQL.add("create table t3(t3 int);");
ADOQuery1.ExecSQL;
ADOConnection1.RollbackTrans;

v itoge tablitsi t3 ne suschestviyet. Vozvozhno zavisit on DBE i providera?


 
Johnmen ©   (2003-02-27 15:39) [3]

Ну я не знаю, что скрывается за методом BeginTrans для ADOConnection и за остальными, стоят ли за ними реальные транзакции...


 
Johnmen ©   (2003-02-27 15:44) [4]

...но могу с большой степень достоверности предположть, что все запросы между BeginTrans и RollbackTrans просто ложатся в кеш и реально не выполняютя...


 
ermserg ©   (2003-02-27 16:04) [5]

Ti ne prav. Tolko-chto nashol:
ADOConnection.Properties["Transaction DDL"] := ...

vozmozhniye znachinya sm - http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adosql/adoprg04_83jt.asp

Nuzhno bit uverennim, chto ispolzuyemiy provider podderzhivayet dannoye svoystvo.


 
Johnmen ©   (2003-02-27 16:29) [6]

И что ? Ну глянул... И причем здесь это ?
Может просто запустить какой-нибудь SQL Monitor да и отследить приходящие к базе запросы ? Я бы попробовал, да только нет MSSQL и ADO не пользуюсь, да и не нужно это мне, по большому счету...:)))


 
ermserg ©   (2003-02-27 16:50) [7]

Kak eto pri-chom? Trabsaktsiya mozhet soderzhat i DDL komandi i DML. I vse izmeneniya sdellanniye v transaktsii - i INSERT INTO i CREATE TABLE budut ili commit ili rollback.


 
Desdechado ©   (2003-02-27 16:55) [8]

>DDL команды (типа DROP, CREATE) выполняются вне контекста
>пользовательских транзакций.
не совсем так. DDL-команды нужно выполнять в отдельных транзакциях. Просто иначе при попытке обращения к таблице она еще не известна серверу и, след., будет ошибка.


 
Johnmen ©   (2003-02-27 17:06) [9]

>ermserg © (27.02.03 16:50)

Еще раз. О каких транзакциях мы говорим ? О реальных или об их эмулировании ?
Если не сложно, попробуй все-таки отмониторить запросы...

>Desdechado © (27.02.03 16:55)

Ну допустим стартовали транзакцию. И что будет, если в ее рамках делаем CREATE TABLE...а потом ROLLBACK ?


 
ermserg ©   (2003-02-27 17:29) [10]

>О реальных или об их эмулировании ?

Ya znayu yavno-startuyemiye i neyavno-startuyemiye. Chto takoye emulirovanniye?

> И что будет, если в ее рамках делаем CREATE TABLE...а потом ROLLBACK

Tablitsi ne budet.


 
Johnmen ©   (2003-02-27 17:57) [11]

Я устал...Мне тяжело...:)

>Tablitsi ne budet.

Вот я и пытаюсь (но видимо безуспешно) намекнуть, что ее не будет не потому, что выполнен настоящий rollback, а потому, что никакого create в реальности вообще не было !



 
ermserg ©   (2003-02-27 18:15) [12]

Mne ne legche :)
Eto ne seryozno.

begin transaction;
create table tbl(clmn int);
commit transaction; - posle etogo tablitsa suschestvuyet, potomu-chto CREATE v realnosti bilo, NO

begin transaction;
create table tbl(clmn int);
rollback transaction; - posle etogo tablitsi net, potomu-chto CREATE v realnosti ne bilo.

Ya eto pravilno ulovil?


 
Zelius ©   (2003-02-27 19:01) [13]

Johnmen - спасибо! ответ меня устраивает!



Страницы: 1 вся ветка

Текущий архив: 2003.03.20;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
7-64411
tim5
2003-01-26 20:54
2003.03.20
Скрытие кнопку Пуск


4-64444
3223(jab)
2003-01-25 01:37
2003.03.20
ReadProcessMemory(???,???,???,???,???); Вроде всё компилится...


14-64362
_igorek_
2003-03-05 14:17
2003.03.20
Работа с почтой


14-64343
ZeroDivide
2003-03-04 16:22
2003.03.20
Да здравствуют отечественные военные кулеры!


1-64087
mixamixa
2003-03-10 07:40
2003.03.20
Всегда активная форма