2013-07-26 57 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; 
相关问题