2013-10-03 69 views
34

在PostgreSql 9.2.4中,我有两个表:user (id, login, password, name)dealer (id, user_id)PostgreSql INSERT FROM SELECT RETURNING ID

我想插入两个表中返回创建的经销商的ID。

目前我有两个疑问做:

WITH rows AS (
    INSERT INTO "user" 
     (login, password, name) 
    VALUES 
     ('dealer1', 'jygbjybk', 'Dealer 1') 
    RETURNING id 
) 
INSERT INTO dealer (user_id) 
    SELECT id 
    FROM rows; 
SELECT currval('dealer_id_seq'); 

但我可以使用RETURNING声明单INSERT查询实现这一点?

+0

不要将用户的密码明文存储! – nrlakin

回答

56

你只需要添加一个RETURNING idINSERT ... SELECT

WITH rows AS (...) 
INSERT INTO dealer (user_id) 
    SELECT id 
    FROM rows 
    RETURNING id; 

演示:http://sqlfiddle.com/#!12/75008/1

+0

比我想象的更容易:)谢谢! – Nailgun

相关问题