2013-07-26 80 views
1

我有一個Postgres數據庫有3個表,比如說ABC。我想要選擇表A中的數據,然後循環檢查每列中的值,然後根據條件將數據插入表B或表C中。從一個表中選擇,根據條件INSERT到另外兩個表中

我該如何做到這一點,請有人可以發表一個示例腳本。我更喜歡plpgsql(使用PGAdmin3)。

回答

2

你不需要一個遊標,你不需要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; 
+1

...如果你想確保他們是絕對一致在面對併發修改(包括'INSERTs')時,請確保在繼續之前將'LOCK TABLE A IN EXCLUSIVE MODE'鎖定在獨佔模式下,使其在只讀期間持續。 –

0

用戶光標在表格中的SELECT語句,請參見本link

光標在裏面你可以檢查狀態和運行基於B INSERT語句或C

對於代碼示例看到這個link

乾杯!

0

鍵入以下命令:

begin; 
insert into table_name as select * from table_name2 where Name="?"; 
commit; 
相關問題