Lorsque j'insère une ligne, il incrémente le champ ID à l'aide de série. P>
Comment puis-je retourner le numéro d'identification nouvellement créé juste après l'insertion? p>
(la base de données est PostgreSQL.) P>
5 Réponses :
$db->Insert_ID();
Traitez votre insert identique à celle d'une sélection et d'une utilisation de votre insertion: p>
Insérer dans les valeurs FOO (bar) ('DOE') ID de retour; P>
récupérez le résultat et vous avez terminé. Fonctionne depuis la version 8.2 p>
Le insertion_id () code> in
adodb code> renvoie la valeur vide ou dans certains cas, il renvoie 0.
postgreSQL CODE> J'ai travaillé sur 9.1 Version. P>
$_sql = 'INSERT INTO '.$_table.' (';
$_sql .= implode(', ',$arr_fld_names);
$_sql .= ") VALUES ('";
$_sql .= implode("', '",$arr_fld_values);
$_sql .= "') RETURNING id";
if ($echo){
echo $_sql;
}
$_return = $this->Execute($_sql);
preg_match_all('/([\d]+)/', $_return, $ret_val);
$this->mLastInsertedId = $ret_val[0][0]; // Keep track of the last inserted ID.
Ce code fonctionne bien:
$insertId = $adodb->getOne("INSERT INTO test (str) values ('test') RETURNING id");
J'aime utiliser adodb code> pour éviter d'écrire SQL. J'ai besoin d'insérer un enregistrement sur la table1 avec Text1 et en même temps un enregistrement sur la table2 avec d'autres données et l'ID créé sur la table1 comme référence. J'aime l'idée d'utiliser transaction et
autoexecute code>
autoexecute code> manque toujours d'une option pour renvoyer le
insertion_id () < / code> p> p>