phpday 2025 - Call For Papers

db2_last_insert_id

(PECL ibm_db2 >= 1.7.1)

db2_last_insert_idRetourne le dernier ID généré par la dernière requête d'insertion

Description

db2_last_insert_id(resource $resource): ?string

Retourne le dernier identifiant autogénéré par la dernière requête d'insertion pour la connexion en cours.

Le résultat de cette fonction n'est pas affecté par les événements suivants :

  • Une commande unique INSERT avec une clause VALUES pour une table qui ne dispose pas de colonne d'identité.

  • Une commande INSERT multiple avec clause VALUES.

  • Une commande INSERT avec un SELECT.

  • Une commande ROLLBACK TO SAVEPOINT.

Liste de paramètres

resource

Une ressource de connexion valide, créée par db2_connect() ou db2_pconnect(). La valeur de ce paramètre ne peut pas être une ressource de commande ou de résultat.

Valeurs de retour

Retourne l'identifiant autogénéré qui a pu être exécuté correctement sur cette connexion.

Exemples

Exemple #1 Exemple avec db2_last_insert_id()

L'exemple suivant montre comment retourner un identifiant automatique

<?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);

/* Vérification de l'insertion d'une ligne unique */
$stmt = db2_exec($conn, $insertTable);
$ret = db2_last_insert_id($conn);
if(
$ret) {
echo
"Dernier ID inséré : " . $ret . "\n";
} else {
echo
"Pas d'ID inséré récemment.\n";
}

db2_close($conn);
}
else {
echo
"La connexion a échoué.";
}
?>

L'exemple ci-dessus va afficher :

Dernier ID généré : 1

add a note

User Contributed Notes 1 note

up
0
Mark Adkins
14 years ago
On the iSeries and maybe other db2 platforms, this function is not defined--PHP Fatal error: Call to undefined function db2_last_insert_id().

The alternative is to use IDENTITY_VAL_LOCAL().

The above example becomes:

<?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);

/* Checking for single row inserted. */
$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