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



0 commentaire(s)