Aller au contenu


PostgreSQL: récupérer le last insert ID en une itération

Il existe un truc pas mal avec PostgreSQL, c’est le fait de pouvoir récupérer directement via un requête INSERT, l’id de la ligne insérée, en une seule intération, via l’extension RETURNING.

Exemple, en admettant une structure de table: id (sequence)/username/address

INSERT INTO users (username, address) VALUES ('me', 'home') RETURNING id;

Du coup, ça permet donc de faire des choses comme suit, avec par exemple Zend_DB :

$id = $db->fetchOne( "INSERT INTO users (username, address) VALUES (?, ?) RETURNING id", array ( 'me', 'home' ) );

Sympa, non ? Ok c’est spécifique PostgreSQL, mais si votre RDBMS ne doit pas changer…

Ah, et c’est aussi possible de récupérer le même genre d’info avec une requête DELETE, pour connaître toutes les rows qui ont été supprimées !

$ids = $db->fetchAll( 'DELETE FROM users WHERE username = ? RETURNING *', array( 'me' ) );

Posté dans développement, Web. Tags , , .

0 commentaire(s)

Quelques tags HTML sont acceptés

(obligatoire)

(obligatoire, mais ne sera pas diffusé)

ou faire un rétrolien depuis votre site.