Главная страница
    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.009 c
1-64070
Array
2003-03-08 23:33
2003.03.20
Проблема с динамическим массивом


3-63966
Erden
2003-02-27 08:44
2003.03.20
SQL ...


1-64196
Маркыч
2003-03-08 09:04
2003.03.20
List Box. Owner Draw.


3-63934
grid_y
2003-03-03 15:11
2003.03.20
Проблема с базой Paradox.


1-64146
X3coder
2003-03-07 12:54
2003.03.20
Как обратиться к компонентам





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский