PHP Conference Japan 2024

db2_last_insert_id

(PECL ibm_db2 >= 1.7.1)

db2_last_insert_id傳回此連線上成功執行的最後一個插入查詢的自動產生 ID

說明

db2_last_insert_id(資源 $resource): ?字串

傳回此連線上成功執行的最後一個插入查詢的自動產生 ID。

此函式的結果不受以下任何因素影響

  • 單列 INSERT 陳述式,包含用於不具識別欄位的表格的 VALUES 子句。

  • 多列 INSERT 陳述式,包含 VALUES 子句。

  • 包含完整選擇的 INSERT 陳述式。

  • ROLLBACK TO SAVEPOINT 陳述式。

參數

資源

db2_connect()db2_pconnect() 傳回的有效連線資源。此參數的值不能是陳述式資源或結果集資源。

回傳值

回傳在此連線上成功執行的最後一個插入查詢的自動產生 ID。

範例

範例 #1 db2_last_insert_id() 範例

以下範例顯示如何回傳在此連線上成功執行的最後一個插入查詢的自動產生 ID。

<?php

$database
= "SAMPLE";
$user = "db2inst1";
$password = "ibmdb2";

$conn = db2_connect($database, $user, $password);
if(
$conn) {
$createTable = "CREATE TABLE lastInsertID
(id integer GENERATED BY DEFAULT AS IDENTITY, name varchar(20))"
;
$insertTable = "INSERT INTO lastInsertID (name) VALUES ('Temp Name')";

$stmt = @db2_exec($conn, $createTable);

/* 檢查是否插入單列。 */
$stmt = db2_exec($conn, $insertTable);
$ret = db2_last_insert_id($conn);
if(
$ret) {
echo
"最後插入的 ID 為: " . $ret . "\n";
} else {
echo
"沒有最後插入的 ID。\n";
}

db2_close($conn);
}
else {
echo
"連線失敗。";
}
?>

上述範例將輸出

Last Insert ID is : 1

新增註記

使用者貢獻的註記 1 則註記

0
Mark Adkins
14 年前
在 iSeries 上,或許還有其他 db2 平台上,此函式未定義 -- PHP 致命錯誤:呼叫未定義的函式 db2_last_insert_id()。

替代方案是使用 IDENTITY_VAL_LOCAL()。

上述範例變成

<?php

$database
= "SAMPLE";
$user = "db2inst1";
$password = "ibmdb2";

$conn = db2_connect($database, $user, $password);
if(
$conn) {
$createTable = "CREATE TABLE lastInsertID
(id integer GENERATED BY DEFAULT AS IDENTITY, name varchar(20))"
;
$insertTable = "INSERT INTO lastInsertID (name) VALUES ('Temp Name')";
$getIdentity = "SELECT IDENTITY_VAL_LOCAL() AS LASTID FROM SYSIBM.SYSDUMMY1";

$stmt = @db2_exec($conn, $createTable);

/* 檢查是否插入單列資料。 */
$stmt = db2_exec($conn, $insertTable);

$stmt = db2_exec($conn, $getIdentity);
$row = db2_fetch_assoc($stmt);
$ret = $row['LASTID'];

if(
$ret) {
echo
"最後插入的 ID 為: " . $ret . "\n";
} else {
echo
"沒有最後插入的 ID。\n";
}

db2_close($conn);
}
else {
echo
"連線失敗。";
}
?>
To Top