向postgres发出“insert”语句时,如何获取最后在DB中插入的行的ID?
我尝试了“pg”,“pg-native”,“pg-connection”以及其他一些软件包。对于每个包,我尝试了async
和{{1}}方法。我读了假装成包文档的东西。我检查了包的源代码。对于我的生活,我无法理解这一点,我无法相信我是唯一一个面对这个问题的人。
非常感谢任何见解。
答案 0 :(得分:11)
此处的关键是在INSERT查询中使用RETURNING id
。
pg wiki有an example that shows how this is done。
// Let's pretend we have a user table with the 'id' as the auto-incrementing primary key
var queryText = 'INSERT INTO users(password_hash, email) VALUES($1, $2) RETURNING id'
client.query(queryText, ['841l14yah', 'test@te.st'], function(err, result) {
if (err) //handle error
else {
var newlyCreatedUserId = result.rows[0].id;
}
});
或async/await
:
const result = await client.query(queryText, ['841l14yah', 'test@te.st']);
const newlyCreatedUserId = result.rows[0].id;