Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.013 c
1-64172
Darrin
2003-03-07 18:12
2003.03.20
Глюк ComboBox под Win98


7-64421
M@X
2003-01-23 10:48
2003.03.20
И опять по COM порт ;)


14-64373
panov
2003-01-26 19:07
2003.03.20
О теме сообщения.


1-64080
mixamixa
2003-03-10 07:38
2003.03.20
Как вывести на принтер содержимое StringGrid1?


14-64297
DeMoN-777
2003-03-04 08:54
2003.03.20
Чат на этом сайте, самый лучший!




   Наверх