PostgreSQL。在连接表中插入值
你好。我在连接表中插入数据时遇到问题PostgreSQL。在连接表中插入值,sql,postgresql,junction-table,Sql,Postgresql,Junction Table,你好。我在连接表中插入数据时遇到问题 这是我的桌子: users table ----------------------- |user_id |FullName | ----------------------- |1 | John | |2 | Michael | |3 | Bryce | addresses table ---------------------------------
这是我的桌子:
users table
-----------------------
|user_id |FullName |
-----------------------
|1 | John |
|2 | Michael |
|3 | Bryce |
addresses table
-----------------------------------------
|address_id| country | city |
-----------------------------------------
| 1 | USA | New-York |
| 2 | Russia | Moscow |
| 3 | Germany | Berlin |
| 4 | UK | London |
This is the Junction table to connect the
two now.
"user_address"
------------------------
| user_id | address_id |
------------------------
| 1 | 1 |
| 1 | 2 |
| 2 | 3 |
| 3 | 1 |
我想连接它们,然后创建地址。因此,我需要在地址表中创建一个新地址,并将它们放在连接处(不关心用户ID
,我只需要处理地址ID
)
以下是我用于创建地址的查询:
"INSERT INTO addresses (country, city) VALUES (?, ?) RETURNING id, country, city"
如您所见,我需要返回已创建地址的值,以便将它们显示给我的消费者
我如何插入一个新地址,获取它的ID并将其放在我的连接处?需要在单个查询中使用。awith
插入子句会有所帮助
with ins AS
(
INSERT INTO addresses (country, city)
VALUES ('USA', 'New-York') RETURNING address_id, country, city
),
ins2 AS
(
INSERT INTO user_address (address_id) select address_id from ins
)
select * from ins
注:
你说
。。不关心用户id,我只需要处理地址id
因此,我假设您有另一种机制来更新user\u id
A和
插入子句会有所帮助
with ins AS
(
INSERT INTO addresses (country, city)
VALUES ('USA', 'New-York') RETURNING address_id, country, city
),
ins2 AS
(
INSERT INTO user_address (address_id) select address_id from ins
)
select * from ins
注:
你说
。。不关心用户id,我只需要处理地址id
因此,我假设您有另一种机制来更新user\u id
用户中的用户ID
与连接表不匹配。你们之间应该如何联系?@KaushikNayak啊,对不起,我抄错了表。已编辑。@KaushikNayak我正在使用Java。我的地址实体有一组用户ID(但用户不知道他的地址-单向绑定,我只对java部分使用此集合,所以我的表中没有集合或其他内容,只是上面列出的字段),当我创建地址时,我将从这个集合中获取用户id,并将它们作为已创建地址的id放入连接中。users
中的用户id
和连接表不匹配。你们之间应该如何联系?@KaushikNayak啊,对不起,我抄错了表。已编辑。@KaushikNayak我正在使用Java。我的地址实体有一组用户id(但用户不知道他的地址-单向绑定,我只对java部分使用此集合,所以我的表中没有集合或其他内容,只是上面列出的字段),当我创建地址时,我将从该集合中获取用户id,并将其作为已创建地址的id连接起来。