删除约束会引发错误

时间:2014-02-06 18:15:06

标签: postgresql

我编写了自己的脚本来生成还原SQL文件,执行还原的首要任务之一是删除应该存在的所有约束。 (别担心,我将脚本限制为备份时存在的脚本。)

这是一个通用代码段

ALTER TABLE ONLY data DROP CONSTRAINT IF EXISTS data_pkey;

在我自己的开发环境中测试它按预期工作。但是,在生产服务器上运行它,相同的代码会引发错误:

ERROR:  syntax error at or near "EXISTS"
LINE 1: ALTER TABLE ONLY data DROP CONSTRAINT IF EXISTS data_pkey;

如果删除IF EXISTS部分且语法为:

ALTER TABLE ONLY data DROP CONSTRAINT data_pkey;

脚本运行没有问题。

我在ALTER TABLE部分下检查了postgres.org,我的语法是有效的。

1 个答案:

答案 0 :(得分:1)

作为旧版本的解决方法,您可以:

  • 无条件地删除约束并捕获错误;或

  • 检查information_schemapg_catalog是否有约束,只有在您发现它已存在时才将其删除。