Используя lastInsertId() внутри транзакции, можно быть уверенным в том, что ID не возьмется с другой транзакции в глобальном смысле? Код (PHP): $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'], ) ); } PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Наткнулся в топике на тему, где говориться о том, что если единовременно из двух скриптов, которые одновременно произведут запись в таблицу, то может быть взят неверный ID
у субд свой механизм контроля целостности идентификаторов который работает вне зависимости от того есть транзакция или нет.
Если из этого метода брать, то будет хорошо. Если сделать запрос и селектом попытаться получить максимальный или какой там, то можно получить конечно соседский.