Имя: Пароль:
1C
 
Несколько запросов в одном 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
Про транзакции не забудь