2017-02-19 60 views
0

在PostgreSQL,我有兩個表PostgreSQL的插入其他錶行作爲屬性

CREATE TABLE A (
    id int PRIMARY KEY, 
    name varchar 
); 

CREATE TABLE B (
    id int PRIMARY KEY, 
    a A, 
    type varchar 
); 

正如你所看到的,表B的屬性類型之一是A.

首先,我插入行用下面的查詢

INSERT INTO A(id, name) VALUES(3241,'Item1'); 

然後,我需要插入新行表B.我怎樣才能插入表B中的新行時在表中選擇一個行表A,用作屬性值?

回答

1

首先,這不是一個好主意。如果你想將數據從兩個表結合起來,你應該使用常規的參考,像這樣:

CREATE TABLE B (
    id int PRIMARY KEY, 
    a_id int REFERENCES A(id), 
    type varchar 
); 

儘管如此,它的正式可能你想要的(但不推薦):

INSERT INTO B(id, A, type) 
VALUES (1, (SELECT A FROM A WHERE id = 3241), 'some type'); 

SELECT * FROM B; 

id |  a  | type  
----+--------------+----------- 
    1 | (3241,Item1) | some type 
(1 row) 
0

試試這個: -

INSERT INTO B (id,a,type) VALUES 
    (123456,(SELECT A from A WHERE id=1234656), 'typeName');