我有一個Postgres數據庫有3個表,比如說A
,B
和C
。我想要選擇表A
中的數據,然後循環檢查每列中的值,然後根據條件將數據插入表B
或表C
中。從一個表中選擇,根據條件INSERT到另外兩個表中
我該如何做到這一點,請有人可以發表一個示例腳本。我更喜歡plpgsql(使用PGAdmin3)。
我有一個Postgres數據庫有3個表,比如說A
,B
和C
。我想要選擇表A
中的數據,然後循環檢查每列中的值,然後根據條件將數據插入表B
或表C
中。從一個表中選擇,根據條件INSERT到另外兩個表中
我該如何做到這一點,請有人可以發表一個示例腳本。我更喜歡plpgsql(使用PGAdmin3)。
你不需要一個遊標,你不需要plpgsql,你甚至不需要一個data-modifying CTE這將允許你在一個SQL語句中做到這一點。
只要運行兩個明文INSERT
陳述。把它們放在一個事務,如果你想確保全部或沒有應用:
BEGIN;
INSERT INTO B (col1, col2)
SELECT col1, col2
FROM A
WHERE col_cond = 'something';
INSERT INTO C (col1, col2)
SELECT col1, col2
FROM A
WHERE col_cond IS DISTINCT FROM 'something';
COMMIT;
鍵入以下命令:
begin;
insert into table_name as select * from table_name2 where Name="?";
commit;
...如果你想確保他們是絕對一致在面對併發修改(包括'INSERTs')時,請確保在繼續之前將'LOCK TABLE A IN EXCLUSIVE MODE'鎖定在獨佔模式下,使其在只讀期間持續。 –