在Postgres中使用INSERT INTO和关联

时间:2016-07-01 18:33:42

标签: postgresql insert-into

假设我有两张桌子。有没有办法同时在两个行中插入行?当我有一张桌子时我就可以做到

INSERT INTO users (first_name, last_name, email) VALUES ('Tom','Prats','tom@tomprats.com'), ('Tim', 'Prats', tim@tomprats.com);

如果我现在有一个存储电子邮件的表,以及一个存储名字和姓氏的关联表,我该如何同时插入两个?请记住,我正在导入大量数据。

Table "users" Column | Type | Modifiers ---------------------+---------------+----------- id | character(36) | not null email | text | Indexes: "pk_users" PRIMARY KEY, btree (id) Foreign-key constraints: "fk_users_attributes" FOREIGN KEY (attributes_id) REFERENCES user_attributes(id)

Table "user_attributes" Column | Type | Modifiers -----------------+---------------+----------- id | character(36) | not null first_name | text | last_name | text | Indexes: "pk_user_attributes" PRIMARY KEY, btree (id) Referenced by: TABLE "users" CONSTRAINT "fk_users_attributes" FOREIGN KEY (attributes_id) REFERENCES user_attributes(id)

1 个答案:

答案 0 :(得分:1)

您不能仅通过插入来执行此操作。

如果必须在一行中执行此操作,最好的方法是编写一个将执行2次插入的短函数。这将导致每次调用一次事务(如果这是主要问题)。

您也可以使用Data-Modifying Statements in WITH