db2_last_insert_id

(PECL ibm_db2 >= 1.7.1)

db2_last_insert_id返回在当前连接上成功执行的最后一个插入查询的自动生成的 ID

说明

db2_last_insert_id(resource $resource): ?string

返回在当前连接上成功执行的最后一个插入查询的自动生成的 ID。

此函数的结果不受以下任何操作的影响

  • 没有标识列的表,包含 VALUES 子句的单行 INSERT 语句。

  • 包含 VALUES 子句的多行 INSERT 语句。

  • 包含完整选择语句的 INSERT 语句。

  • ROLLBACK TO SAVEPOINT 语句。

参数

resource

有效的连接资源,如 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
"Last Insert ID is : " . $ret . "\n";
} else {
echo
"No Last insert ID.\n";
}

db2_close($conn);
}
else {
echo
"Connection failed.";
}
?>

上面的示例将会输出

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
"Last Insert ID is : " . $ret . "\n";
} else {
echo
"No Last insert ID.\n";
}

db2_close($conn);
}
else {
echo
"Connection failed.";
}
?>
To Top