如果在Postgresql中不存在则添加列

时间:2014-02-18 08:35:30

标签: postgresql postgresql-9.3

postgresql( 9.3.2 )可以在添加新列之前检查列的存在吗? 我不想创建一个仅用于检查存在的函数。

就像这样:

  ALTER TABLE IF NOT EXISTS table_name ADD COLUMN column_name data_type;

3 个答案:

答案 0 :(得分:3)

您需要在Plpgsql中编写自己的存储过程以检查表是否包含此列。为此,您需要表PG_ATTRIBUTE和PG_CLASS,其中Postgres分别存储模式元数据,特别是有关列和表的信息。

您需要在存储过程中检查其结果的查询将是一个JOIN,如:

SELECT A.ATTNAME FROM PG_ATTRIBUTE A, PG_CLASS C                                             
WHERE A.ATTRELID = C.OID AND A.ATTNAME = 'column_name_check_if_exists' AND C.relname= 'table_name' ;

答案 1 :(得分:2)

在DDL中,您只能:

  • 添加列
  • 删除列
  • 添加约束
  • 删除约束
  • 更改默认值
  • 更改列数据类型
  • 重命名列
  • 重命名表格

更改表:概要和示例 - > http://www.postgresql.org/docs/9.3/static/sql-altertable.html

对于验证......你需要制作“PL / SQL”

答案 2 :(得分:2)

所以,没有这样的查询。我应该使用PLPGSQL。