![]() |
|
Несколько запросов в одном ADODB.Connection | ☑ | ||
---|---|---|---|---|
0
myr4ik07
17.11.18
✎
00:05
|
добрый день, как выполнить этих четыре команды в одной
Запрос = INSERT INTO orders (id_user, status, first_name, last_name, phone, email, delivery, pay_method, address, comments, cost, price_delivery, name, liqpay_status, city, department, street, house, house_number, sale, city_np_code, department_np_code, promocod, bonus, is_no_call_me, is_gift, first_name_recipient, last_name_recipient, phone_recipient, created_at, updated_at) VALUES ('429', 'new', 'Ivan', 'Ivanov', '0991234567', 'admin@admin.com', 'in_ukraine', 'nal_pay', 'Kiev, Ivanova 38', 'do 14:00', '228', '40', '', '0', 'Kiev', 'Отделение №3...', 'Ivanova', '38', '306', '0', 'Nova Poshta City Code Here', 'Nova Poshta Department Code Here', '', '96', '0', '1', 'Petr', 'Petrov', '0501234567', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP()); SET @last_id = LAST_INSERT_ID(); INSERT INTO orders_product (id_order, id_product, count, price, params, sale) VALUES (@last_id, '113', '1', '350', '', '0'); SELECT @last_id; нужно через Connection = Новый COMОбъект("ADODB.Connection"); Connection.Open("driver=MySQL ODBC 5.1 Driver;database="+СокрЛП(DSN)+";server="+СокрЛП(ServerName)+";uid="+СокрЛП(UID)+";pwd="+СокрЛП(PWD)+";STMT=set character_set_results=cp1251;"); Connection.Execute(Запрос); постоянно ошибку получаю {ВнешняяОбработка.ПоследнийИДИзСайта.Форма.Форма.Форма(29)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [MySQL][ODBC 5.1 Driver][mysqld-5.5.60-0+deb8u1-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET @last_id = LAST_INSERT_ID(); INSERT INTO orders_product (id_order, id_produ' at line 6 |
|||
1
myr4ik07
17.11.18
✎
00:06
|
||||
2
myr4ik07
17.11.18
✎
00:07
|
т.е. мне нужно в одном запросе записать в две таблицы данные + вторую таблицу записать с полученным последним ИД и в результате еще возвратить последний ИД записанной строки
|
|||
3
myr4ik07
17.11.18
✎
00:33
|
только через хранимые процедуры на стороне бд выйдет?
|
|||
4
myr4ik07
17.11.18
✎
00:39
|
как вариант заработало через
Выборка = Connection.Execute("INSERT INTO orders |(id_user, status, first_name, last_name, phone, email, delivery, pay_method, address, comments, cost, price_delivery, name, liqpay_status, city, department, street, house, house_number, sale, city_np_code, department_np_code, promocod, bonus, is_no_call_me, is_gift, first_name_recipient, last_name_recipient, phone_recipient, created_at, updated_at) |VALUES |('429', 'new', 'Ivan', 'Ivanov', '0991234567', 'admin@admin.com', 'in_ukraine', 'nal_pay', 'Kiev, Ivanova 38', 'do 14:00', '228', '40', '', '0', 'Kiev', 'Отделение №3...', 'Ivanova', '38', '306', '0', 'Nova Poshta City Code Here', 'Nova Poshta Department Code Here', '', '96', '0', '1', 'Petr', 'Petrov', '0501234567', CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP());"); Выборка = Connection.Execute("SET @last_id = LAST_INSERT_ID();"); Выборка = Connection.Execute("INSERT INTO orders_product (id_order, id_product, count, price, params, sale) VALUES (@last_id, '113', '1', '350', '', '0');"); Выборка = Connection.Execute("SELECT @last_id;"); Пока Выборка.EOF() = 0 Цикл LastID = Выборка.Fields("@last_id").Value; Выборка.MoveNext(); КонецЦикла; |
|||
5
trad
17.11.18
✎
09:36
|
Про транзакции не забудь
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |