1

在 PostgreSQL 中是否可以同时更新一个表并将数据插入另一个表。

喜欢

UPDATE table1
SET column4=true
AND INSERT into table2
SELECT column1, column2, column3
FROM table 1
WHERE column1="peter"
;
4

2 回答 2

2

在 Postgres 9.1 或更高版本上,您可以使用以下内容:

WITH source AS (UPDATE table1
                SET column4=true
                WHERE column1='peter'
                RETURNING column1, column2, column3)
INSERT INTO table2 
SELECT column1, column2, column3
FROM source;
于 2013-08-08T15:30:30.653 回答
0

您可以在事务中执行多个语句,因此它仍然是对数据的原子更改。

BEGIN;

UPDATE table1
SET column4=true;

INSERT into table2
SELECT column1, column2, column3
FROM table 1
WHERE column1="peter";

COMMIT;

如果由于某种原因插入失败,则整个事务将失败,并且更改将被撤销,包括在插入语句之前执行的更新。

于 2013-08-08T15:05:03.783 回答