如何使用 php、SQL SERVER 2005 从 INSERT 语句返回插入的行?

Lit*_*eeX 2 php sql-server sql-server-2005

在 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...
        }
     }
}
Run Code Online (Sandbox Code Playgroud)

但是,我担心在我之前发生另一个插入的可能性,SELECT LAST_INSERT_ID()从而弄乱了我的启动逻辑。我如何确定最后插入的 id 确实是我之前调用的 INSERT,而不是其他地方发生的事情?

有没有更合适的方法来做到这一点,也许是一个完整的 SQL 解决方案(这样查询会自动返回行而不是使用 PHP)?

更新:myTable确实有一个显式定义(和自动递增)的标识列,名为id.