我们可以更新1个查询两个表的PostgreSQL

问题描述:

我使用的Postgres作为我的数据库,并进行更新基于ACCOUNTID I 2个表我们可以更新1个查询两个表的PostgreSQL

accounts 
id | name | status 


accountOwner 
account_id | user_id 

我已经user_id说明(accountOwner表)和状态(账表)有。是否有可能在1个查询中更新这两个表?我尝试以下

UPDATE accounts,accountOwner SET accounts.status='active', accountOwner.user_id=3 WHERE accounts.id=accountOwner.account_id AND accountOwner.account_id = 1; 

不,你不能更新一次两个表。 The documentation说:

更新 - 的

但是更新行,你可以使用一个FROM子句,例如:

UPDATE accounts SET status = 'active' 
    FROM accountOwners 
    WHERE accounts.id = accountOwners.account_id 
    AND accountOwners.account_id = 1; 
+0

您的解决方案是正确的一个,但是一个'UPDATE'语句*可以*更新两个表:'WITH SUB AS(UPDATE table1 ... RETURNING ...)UPDATE table2 ...'。 –