postgresql( 9.3.2 )可以在添加新列之前检查列的存在吗? 我不想创建一个仅用于检查存在的函数。
就像这样:
ALTER TABLE IF NOT EXISTS table_name ADD COLUMN column_name data_type;
答案 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。