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;

何らかの理由で挿入が失敗した場合、トランザクション全体が失敗し、insert ステートメントの前に実行された更新を含む変更がバックアウトされます。

于 2013-08-08T15:05:03.783 に答える