2010-11-09 9 views
2

Je sais qu'il existe un moyen de récupérer toutes les données de ma dernière insertion, y compris les champs générés automatiquement, comme id, et le contenu par défaut. Mais le problème est: Comment puis-je faire cela?Récupère les données de la dernière requête d'insertion en utilisant postgres

pour par exemple:

INSERT INTO schema.table (col1,col2) VALUES ("rowdata1","rowdata2"); 

la table ressemble à ceci:

id, col1, col2, col3 (default='t') 

alors comment puis-je obtenir la valeur d'identité et col3? Il y a un mot-clé comme RETOURNER ou si, mais cela génère une erreur :)

+0

Merci de mentionner qu'il renvoie une erreur. C'est certainement mieux que de simplement "ça ne marche pas", même si cela serait encore mieux si vous avez posté le message d'erreur. – Quassnoi

Répondre

4
INSERT 
INTO schema.table (col1, col2) 
VALUES ('rowdata1', 'rowdata2') 
RETURNING 
     * 

, ou, si vous avez besoin des colonnes spécifiques,

INSERT 
INTO schema.table (col1, col2) 
VALUES ('rowdata1', 'rowdata2') 
RETURNING 
     id, col3 
+0

merci! pour la réponse rapide. Mais theres une question ouverte. Puis-je gérer les données de retour comme je le ferais dans une requête SELECT? –

+0

@Nort: si la requête est toute seule, oui. Vous ne pouvez pas l'utiliser dans une jointure, une sous-requête, etc., mais vous pouvez l'intégrer dans une fonction et utiliser la fonction où que vous utilisiez une requête SELECT. – Quassnoi

+0

merci beaucoup! Tu m'as vraiment aidé :) –

Questions connexes