在 PostgreSQL 中是否可以同时更新一个表并将数据插入另一个表。
喜欢
UPDATE table1
SET column4=true
AND INSERT into table2
SELECT column1, column2, column3
FROM table 1
WHERE column1="peter"
;
在 PostgreSQL 中是否可以同时更新一个表并将数据插入另一个表。
喜欢
UPDATE table1
SET column4=true
AND INSERT into table2
SELECT column1, column2, column3
FROM table 1
WHERE column1="peter"
;
在 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;
您可以在事务中执行多个语句,因此它仍然是对数据的原子更改。
BEGIN;
UPDATE table1
SET column4=true;
INSERT into table2
SELECT column1, column2, column3
FROM table 1
WHERE column1="peter";
COMMIT;
如果由于某种原因插入失败,则整个事务将失败,并且更改将被撤销,包括在插入语句之前执行的更新。