仅在目标表名称不存在时如何重命名postgres表

时间:2019-07-02 11:49:14

标签: postgresql

我想在迁移过程中重命名表,但前提是该表尚未重命名。我当前正在运行:

  setFieldsValue({
    companyCode: response.companyCode,
  });

但是,如果ALTER TABLE IF EXISTS old_name RENAME TO new_name 已经存在,它将继续运行。只有在new_name不存在的情况下,才可以运行此语句吗?

1 个答案:

答案 0 :(得分:0)

您总是可以编写类似于以下内容的匿名代码块(或用户定义的函数/过程):

DO $$
BEGIN
    IF NOT EXISTS (SELECT 1 FROM pg_tables WHERE tablename = 'z') THEN  
        EXECUTE 'ALTER TABLE a RENAME TO z';
    END IF;
END$$;

据我所知,您不能直接使用ALTER TABLE命令指定它。