Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
15-1208092475
Дмитрий С
2008-04-13 17:14
2008.05.25
Плазменый ТВ


9-1170550431
PGD-2007
2007-02-04 03:53
2008.05.25
Стартовал конкурс PGD-2007


15-1207825581
sms
2008-04-10 15:06
2008.05.25
Интернет шлюз


2-1209157274
Res
2008-04-26 01:01
2008.05.25
Инсталлер


3-1197894306
Ангела
2007-12-17 15:25
2008.05.25
Вопрос по таблицам Access





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