创建多个更新和SELECT语句的脚本

时间:2019-05-07 04:36:27

标签: postgresql shell

我们有2个表renewal_bkp和adhoc_bkp以及1个MV作为test_mv1。 我基本上想创建一个脚本来更新renewal_bkp和adhoc_bkp的一行,然后从上述MV中选择数据。 这需要以循环方式完成。以下是

示例:

++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++

update renewal_bkp set network_status='provisioned' where msisdn='3234561010240';
update adhoc_bkp set status='provisioned' where msisdn='3234561010240';
select * from test_mv1 where msisdn='3234561010240';
...
...
and so on

++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++

同一条语句需要使用不同的msisdn编号生成1000次。 您能帮我创建一个脚本吗,然后手动写下每个语句。

谢谢, 桑迪普

1 个答案:

答案 0 :(得分:0)

虽然目前还不清楚您如何访问msisdn,但这是一个紧凑的版本,它在Data-Modifying CTE's的帮助下,可以原子式地完成所有三件事:

WITH
    ids (id) AS (
        VALUES ('3234561010240'), ('...'), ...
    ),
    renewals AS (
        UPDATE renewal_bkp SET network_status = 'provisioned'
        WHERE msisdn IN (SELECT id FROM ids)
    ),
    adhoc AS (
        UPDATE adhoc_bkp SET status = 'provisioned'
        WHERE msisdn IN (SELECT id FROM ids)
    )
SELECT *
FROM test_mv1
WHERE msisdn IN (SELECT id FROM ids)

除了VALUES子句外,您还可以从专用表中放入常规的SELECT,如果您打算每年执行一次以上两次,则很有用。