![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
MySQL и несколько insert-ов [D7, MySQL]
Раиса © (2010-02-15 15:14:00)В программе пишу так (использую ADOQuery):
START TRANSACTION; insert into table1 ......; insert into table2 ...; COMMIT;
Выдается синтаксическая ошибка. Если текст запроса сохраняю в файле, а затем его выполняю через SQLyog (например), то всё записывается в таблицы.
Помогите, пожалуйста, найти ошибку.
Ega23 (2010-02-16 11:37:00) [1]Коль, давай не будем холивара начинать? Тем более, что я не фанат TADOQuery, как ты заметил... :)
sniknik (2010-02-16 11:33:00) [2]> поддержка старых BDE-шных проектов.
имхо, но это тоже недостаток, т.к. он не поддерживает, а только "делает вид". чем делать криво, уж лучше бы не делал ничего... и тогда бы армия "начинающих", но знакомых почему то с BDE программистов, вынуждена была бы учится, а не просто тупо заменять компоненты. (не было бы возможности такого самообмана, типа "взял новое, значит работаю по новому". а на самом деле по старой логике, и с исковерканным пониманием)
а когда знаешь, то заменить одно на другое нет проблем пусть даже TTable на TADODataSet (и даже также криво но быстро как с этими поддержками BDE, но тут хоть с полным осознанием кривизны. а можно чуток подольше но нормально).
Ega23 (2010-02-16 10:22:00) [3]
> Со всеми достоинствами
> ??? это какими?
> недостатки видел, достоинств ни одного...
А достоинство только одно - поддержка старых BDE-шных проектов.
12 (2010-02-16 10:11:00) [4]
> откатывается транзакция
куда ж она денется, когда разденется
> хотелось весь запрос через ; написать
там программа (SQLyog? или как там)наверняка распарсивает строку, и делеает так же,
begintran
ExecSQL
ExecSQL
committran
> > Со всеми достоинствами
> ??? это какими?
> недостатки видел, достоинств ни одного...
это какие?
Раиса (2010-02-16 09:07:00) [5]> 12 © (15.02.10 15:18) [2]
Воспользовалась этим советом. Вроде бы откатывается транзакция в случае ошибок.
А так хотелось весь запрос через ; написать как в MS SQL, но пришлось писать:
ADOQuery1.ExecSQL;
..
ADOQuery1.ExecSQL;
sniknik (2010-02-15 20:19:00) [6]а понял, у тебя 2 таблицы... не обратил внимания.
sniknik (2010-02-15 20:18:00) [7]> А с помощью TADOCommand можно будет весь запрос через ; написать?
а зачем тут? у mysql в одном инсерте позволительна массовая вставка. вроде бы...
вот был бы у тебя mssql тогда можно было бы (но и там не нужно бы).
> Со всеми достоинствами
??? это какими?
недостатки видел, достоинств ни одного...
12 (2010-02-15 16:38:00) [8]чего еще добавить :)
+1
старый фидошный анекдот:
Народ, пошли пиво пить?
+1
+1
..
+1
Ega23 (2010-02-15 16:34:00) [9]
> А с помощью TADOCommand можно будет весь запрос через ;
> написать?
Нет, должна быть атомарность команд.
Речь о том, что TADOQuery это гибрид TADOCommand и TADODataSet в одном флаконе. Со всеми достоинствами, но также и со всеми недостатками. Введён исключительно ради совместимости со старыми BDE-шными проектами.
Раиса (2010-02-15 16:31:00) [10]
> Ega23 © (15.02.10 15:41) [4]
> 12 © (15.02.10 15:48) [5]
А с помощью TADOCommand можно будет весь запрос через ; написать?
12 (2010-02-15 15:48:00) [11]
> используй для данной операции TADOCommand
+1
Ega23 (2010-02-15 15:41:00) [12]Совет: убери TADOQuery, используй для данной операции TADOCommand
Раиса (2010-02-15 15:37:00) [13]Спасибо за ответы.
> 12 © (15.02.10 15:18) [2]
Вроде бы нормально.
12 (2010-02-15 15:18:00) [14]а так если?
ADOConnection1.BeginTrans;
ADOQuery1.ExecSQL;
..
ADOQuery1.ExecSQL;
ADOConnection1.CommitTrans;
Виталий Панасенко(дом) (2010-02-15 15:16:00) [15]да просто это скрипт, я так понимаю... SQLyog это чудо умеет их выполнять, а компоненты АДО - нет.. только одну команду.. я так думаю