更新更新?

问题描述 投票:1回答:1

有没有办法做一个SELECT ... FOR UPDATE,但有一个嵌套更新返回而不是选择?我想的场景看起来有点像:

UPDATE cars
SET model='myModel', ownerID=(
  UPDATE owners
  SET cars_owned = cars_owned + 1
  WHERE name = 'fred'
  RETURNING id
)
WHERE id = 'abc123';

没有交易,有没有办法原子地做到这一点?

sql postgresql
1个回答
2
投票

有点。您可以使用CTE:

WITH o as (
      UPDATE owners
          SET cars_owned = cars_owned + 1
      WHERE name = 'fred'
      RETURNING id
     )
UPDATE cars
    SET model = 'myModel',
        ownerID = (SELECT id FROM o);
WHERE id = 'abc123';
© www.soinside.com 2019 - 2024. All rights reserved.