parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Вопрос /sql.p by Misha v.3

Ux 01.07.2005 11:30

Использую:
Parser v. 3.14
MySQL v.3.23.58
sql.p v 1.39 (Misha v.3)

Нехобходимо делать синхронную запись в 2 таблицы, первая таблица содержит поле autoincrement, вторая таблица связана с ней по этому полю.

В докуметации к серверу написано, что функция last_insert_id() возвращает последнее значение присвоенное полю autoincrement для текущей сессии и не учитывает результаты работы сессий других пользователей.
При использовании такого кода, SQL сервер сообщает об синтаксической ошибке:
^MAIN:pSQL.sql[void;
	insert into table_1 set
		column1=value, #  autoincrement
		column2=value
	^;
	insert into table_2
		column1=last_insert_id(),
		column1=value
]
Хотя такой же запрос из консоли или phpMyAdmin выполняется корректно. Проблема в символе ";".

Если разбить эту операцию на два запроса, то все вроде бы работает:
^MAIN:pSQL.sql[void;
	insert into table_1 set
		column1=value, #  autoincrement
		column2=value
]
^MAIN:pSQL.sql[void;
	insert into table_2
		column1=last_insert_id(),
		column1=value
]
Теперь вопрос: сессией считается подключение ^connect{} (в данном случае через pSQL.server) или все же каждый запрос?

Насколько велика вероятность разрыва связи между таблицами при нескольких одновременных запросах?

  • Вопрос /sql.p by Misha v.3, Ux 01.07.2005 11:30