我有一个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'锁定在独占模式下,使其在只读期间持续。 –