Каков самый простой / самый эффективный способ получить всю строку, вставленную после оператора INSERT?
Я почти уверен, что мог бы сделать это следующим образом:
$aQuery = "INSERT into myTable (a, b, c) VALUES (1, 'Hello', 'Goodbye')";
//the IDENTITY coloumn in myTable is named id
$result = sqlsrv_query($myConn, $aQuery );
if ($result) {
$res = sqlsrv_query('SELECT LAST_INSERT_ID()');
$row = sqlsrv_fetch_array($res);
$lastInsertId = $row[0];
$subQuery = "SELECT * FROM myTable where id = {$lastInsertId}";
$subResult = sqlsrv_query($myConn, $subQuery);
if ($subResult) {
while($subrow = sqlsrv_fetch_array($subResult)) {
echo($subrow ['id'] . ', '.
$subrow ['a'] . ', '.
$subrow ['b']); //etc...
}
}
}
Однако меня беспокоит возможность того, что еще одна вставка произойдет прямо перед моим SELECT LAST_INSERT_ID()
и, таким образом, испортит мою логику для загрузки.Как я могу быть уверен, что последний вставленный идентификатор - это действительно ВСТАВКА, которую я вызывал ранее, а не то, что происходит где-то еще?
Есть ли более подходящий способ сделать это, возможно, полное решение SQL (такое, чтозапрос возвращает строку автоматически, а не с использованием PHP)?
ОБНОВЛЕНИЕ: myTable У DOES есть явно определенный (и автоматически увеличивающийся) столбец идентификаторов с именем id
.