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

Вниз

Несколько insert-ов (update,delete) в одной транзакции MY SQL   Найти похожие ветки 

 
Раиса   (2007-12-18 15:26) [0]

Необходимо в одной транзакции вставка (удаление, обновление) нескольких записей.
ADOConnection1.BeginTrans;
............
ADOQuery4.SQL.Add("insert into ...");
ADOQuery4.SQL.Add("insert into ...");
try
ADOQuery4.ExecSQL;
except
 ADOConnection1.RollbackTrans;
end;

При откатке в БД остаются записи от предыдущих вставок.

Что делать? В MS SQL таких проблем не замечено.


 
Palladin ©   (2007-12-18 15:27) [1]

а MySQL поддерживает множественные инструкции?


 
Andrey ©   (2007-12-18 15:29) [2]

И тип базы выбран поддерживающий транзакции?


 
Раиса   (2007-12-18 15:34) [3]

Не сильна я в MY SQL

Но в MY FRONT при корректной вставке проходят несколько insert-ов.

А из Дельфи даже корректные не проходят, ругается на ;


 
Правильный_Вася   (2007-12-18 15:35) [4]

не все версии MySQL поддерживают транзакции
команды посылать нужно по одной


 
Раиса   (2007-12-18 15:41) [5]

запрос select version() выдал:
5.0.45-community-nt

MyISAM или InnoDB - не знаю.
Скорее 1.
Значит, транзакции не поддерживаются?


 
Раиса   (2007-12-18 15:41) [6]

запрос select version() выдал:
5.0.45-community-nt

MyISAM или InnoDB - не знаю.
Скорее 1.
Значит, транзакции не поддерживаются?


 
sniknik ©   (2007-12-18 15:43) [7]

> Не сильна я в MY SQL
транзакции в mysql появились только в последних (платных (???)) версиях.  

> А из Дельфи даже корректные не проходят, ругается на ;
может разделитель ; лишний? или не поддерживает. скорее всего.
а MY FRONT (программа?) видать сама разбирает запрос и выполняет по отдельности.

> BeginTrans; RollbackTrans;
вот это замени sql запросами (BEGIN TRANSACTION, ...), и сразу станет ясно есть поддержка или нет. сервер вернет ошибку если что.


 
sniknik ©   (2007-12-18 15:44) [8]

> Значит, транзакции не поддерживаются?
в пятой уже вроде есть. сходи к ним на сайт да посмотри. (mysql.ru)


 
Раиса   (2007-12-18 15:54) [9]

Спасибо всем ответившим.


 
sniknik ©   (2007-12-18 15:55) [10]

http://www.mysql.ru/docs/man/COMMIT.html

Если необходимо переключиться из режима AUTOCOMMIT только для выполнения одной последовательности команд, то для этого можно использовать команду BEGIN или BEGIN WORK:

BEGIN;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summmary=@A WHERE type=1;
COMMIT;

Отметим, что при использовании таблиц, не поддерживающих транзакции, изменения будут записаны сразу же, независимо от статуса режима autocommit.


т.е. по первому абзацу, если нет такой(/не работает) последовательность автокоммит сохранит первые(прошедшие) инсерты.  (BeginTrans; RollbackTrans; наверняка такую последовательность не делают)

и по третьему абзацу, даже если все нормально таблица у них в mysql тоже оказывается должна поддерживать транзакции.


 
Johnmen ©   (2007-12-18 16:49) [11]

Всё, как обычно - лень смотреть в документацию...


 
Раиса   (2007-12-18 17:45) [12]

Не понимаю, какая документация?
БД - не моя. Надо написать клиентское приложение.


 
Kolan ©   (2007-12-18 17:50) [13]

> БД — не моя.

А СУБД?


 
Andrey ©   (2007-12-18 18:04) [14]

>Раиса   (18.12.07 17:45) [12]
И что? Ведь не переходишь улицу на красный свет?
Что мешает принять еще одно правило которое не ты придумала?


 
clickmaker ©   (2007-12-18 18:37) [15]


> [14] Andrey ©   (18.12.07 18:04)
> >Раиса   (18.12.07 17:45) [12]
> И что? Ведь не переходишь улицу на красный свет?

не факт ) светофор же не ее )


 
Andrey ©   (2007-12-18 18:47) [16]

>clickmaker ©   (18.12.07 18:37) [15]
>не факт ) светофор же не ее )
ох... ну тогда пусть не читает доку... и переходит на красный.
у всех своя дорога в ад.



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

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

Наверх




Память: 0.5 MB
Время: 0.019 c
15-1207712843
tButton
2008-04-09 07:47
2008.05.25
Жуткие кристалы


6-1187289971
WebSqlNeederr
2007-08-16 22:46
2008.05.25
Преобразовать айпи в длинный тип


3-1197928124
tempovik
2007-12-18 00:48
2008.05.25
Как получить значение и индекс из сетки DBGrid?


6-1186129295
ratmir
2007-08-03 12:21
2008.05.25
Как программно поменять IP


2-1209126052
dumka
2008-04-25 16:20
2008.05.25
Кнопка