Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.03.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.01 c
14-64370
Dmitry Filippov
2003-03-05 16:33
2003.03.20
Архивация


3-64033
Aramis
2003-03-02 16:53
2003.03.20
Работа с Clipper-овскими индексами NTX


3-63942
AtoL
2003-03-03 15:26
2003.03.20
Программный backup БД


3-63986
Zergling
2003-02-28 06:45
2003.03.20
Транзакции


4-64436
Oleg_D
2003-01-16 02:59
2003.03.20
Загрузка DLL по адресу в памяти.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский