Форум: "Базы";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];
ВнизНесколько 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c