2

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

就像这样:

  ALTER TABLE IF NOT EXISTS table_name ADD COLUMN column_name data_type;
4

3 回答 3

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' ;
于 2014-02-18T08:48:16.980 回答
2

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

于 2014-02-19T04:19:20.687 回答
2

在 DDL 中,您只能:

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

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

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

于 2014-02-18T09:07:28.160 回答