@Ellik

Используя lastInsertId() внутри транзакции, можно быть уверенным в том, что ID не возьмется с другой транзакции в глобальном смысле?

$db->beginTransaction();
				/*****/
				$sql = "INSERT INTO products (name, price) VALUES (:name, :price)";
				$sth = $db->prepare($sql);
				$sth->execute(
					array(
						':name'=>$product['main']['name'],
						':price'=>$product['main']['price'],
					)
				);
				// Получаем id последней вставленной записи
				$idProduct = $db->lastInsertId();

				/*****/
				foreach ($product['attributes'] as $attribute) {
					$sql = "INSERT INTO productAttribute (idProduct, nameAttribute) VALUES (:idProduct, :nameAttribute)";
					$sth = $db->prepare($sql);
					$sth->execute(
						array(
							':idProduct'=>(int)$idProduct,
							':nameAttribute'=>$attribute['attribute'],
						)
					);
				}
  • Вопрос задан
  • 365 просмотров
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
Да, для mysql можно.

https://dev.mysql.com/doc/refman/5.7/en/mysql-inse...
The value of mysql_insert_id() is affected only by statements issued within the current client connection. It is not affected by statements issued by other clients.


То есть берётся последний сгенерированный айдишник в текущем соединении.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы