![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Несколько insert-ов (update,delete) в одной транзакции MY SQL [D7, MySQL]
Раиса © (2007-12-18 15:26:00)Необходимо в одной транзакции вставка (удаление, обновление) нескольких записей.
ADOConnection1.BeginTrans;
............
ADOQuery4.SQL.Add('insert into ...');
ADOQuery4.SQL.Add('insert into ...');
try
ADOQuery4.ExecSQL;
except
ADOConnection1.RollbackTrans;
end;
При откатке в БД остаются записи от предыдущих вставок.
Что делать? В MS SQL таких проблем не замечено.
Andrey (2007-12-18 18:47:00) [1]>clickmaker © (18.12.07 18:37) [15]
>не факт ) светофор же не ее )
ох... ну тогда пусть не читает доку... и переходит на красный.
у всех своя дорога в ад.
clickmaker (2007-12-18 18:37:00) [2]
> [14] Andrey © (18.12.07 18:04)
> >Раиса (18.12.07 17:45) [12]
> И что? Ведь не переходишь улицу на красный свет?
не факт ) светофор же не ее )
Andrey (2007-12-18 18:04:00) [3]>Раиса (18.12.07 17:45) [12]
И что? Ведь не переходишь улицу на красный свет?
Что мешает принять еще одно правило которое не ты придумала?
Kolan (2007-12-18 17:50:00) [4]> БД не моя.
А СУБД?
Раиса (2007-12-18 17:45:00) [5]Не понимаю, какая документация?
БД - не моя. Надо написать клиентское приложение.
Johnmen (2007-12-18 16:49:00) [6]Всё, как обычно - лень смотреть в документацию...
sniknik (2007-12-18 15:55:00) [7]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 тоже оказывается должна поддерживать транзакции.
Раиса (2007-12-18 15:54:00) [8]Спасибо всем ответившим.
sniknik (2007-12-18 15:44:00) [9]> Значит, транзакции не поддерживаются?
в пятой уже вроде есть. сходи к ним на сайт да посмотри. (mysql.ru)
sniknik (2007-12-18 15:43:00) [10]> Не сильна я в MY SQL
транзакции в mysql появились только в последних (платных (???)) версиях.
> А из Дельфи даже корректные не проходят, ругается на ;
может разделитель ; лишний? или не поддерживает. скорее всего.
а MY FRONT (программа?) видать сама разбирает запрос и выполняет по отдельности.
> BeginTrans; RollbackTrans;
вот это замени sql запросами (BEGIN TRANSACTION, ...), и сразу станет ясно есть поддержка или нет. сервер вернет ошибку если что.
Раиса (2007-12-18 15:41:00) [11]запрос select version() выдал:
5.0.45-community-nt
MyISAM или InnoDB - не знаю.
Скорее 1.
Значит, транзакции не поддерживаются?
Раиса (2007-12-18 15:41:00) [12]запрос select version() выдал:
5.0.45-community-nt
MyISAM или InnoDB - не знаю.
Скорее 1.
Значит, транзакции не поддерживаются?
Правильный_Вася (2007-12-18 15:35:00) [13]не все версии MySQL поддерживают транзакции
команды посылать нужно по одной
Раиса (2007-12-18 15:34:00) [14]Не сильна я в MY SQL
Но в MY FRONT при корректной вставке проходят несколько insert-ов.
А из Дельфи даже корректные не проходят, ругается на ;
Andrey (2007-12-18 15:29:00) [15]И тип базы выбран поддерживающий транзакции?
Palladin (2007-12-18 15:27:00) [16]а MySQL поддерживает множественные инструкции?