我想獲取最新記錄的主鍵(auto_increment)以將其用作另一個表中的外鍵。當我使用SCOPE_IDENTITY()爲PDO參數,我得到的錯誤:帶主鍵和範圍標識的插入語句
Call to undefined function SCOPE_IDENTITY().
當我使用它作爲一個直接的值,該語句總是回滾。
我的代碼是否正確?
if (empty($errors)) {
$sqlconnection = new SqlConnection();
$conn = $sqlconnection->db_connect();
if ($conn) {
if (sqlsrv_begin_transaction($conn) === false) {
$errors[] = "Cant start transaction.";
} else {
// Query1
$query1 = "INSERT INTO [RC.table1] (terminname, datum) VALUES (?, ?)";
$params1 = array($eventname, $eventdate);
$stmt1 = sqlsrv_query($conn, $query1, $params1);
//Query2
$query2 = "INSERT INTO [RC.table2] (appointment_id, mandant_id) VALUES ((SELECT SCOPE_IDENTITY()), ?)";
$params2 = array($_SESSION['mandant_id']);
$stmt2 = sqlsrv_query($conn, $query2, $params2);
if($stmt1 && $stmt2) {
sqlsrv_commit($conn);
echo "Transaction committed.<br />";
} else {
sqlsrv_rollback($conn);
echo "Transaction rolled back.<br />";
}
}
} else {
$errors[] = "Cant connect to database.";
}
}
嘗試使用@@ IDENTITY代替 – Sparky
@Sparky:如果您要插入的表上有觸發器,建議不要使用'@@ IDENTITY' –