首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果PostgreSQL上不存在列,如何添加?

如果PostgreSQL上不存在列,如何添加?
EN

Stack Overflow用户
提问于 2012-09-26 16:20:30
回答 9查看 155.1K关注 0票数 182

问题很简单。如何将列x添加到表y,但仅当x列不存在时?我找到了唯一的解决方案here如何检查列是否存在。

代码语言:javascript
运行
复制
SELECT column_name 
FROM information_schema.columns 
WHERE table_name='x' and column_name='y';
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-09-27 02:59:08

下面是使用"DO“语句的简短版本:

代码语言:javascript
运行
复制
DO $$ 
    BEGIN
        BEGIN
            ALTER TABLE <table_name> ADD COLUMN <column_name> <column_type>;
        EXCEPTION
            WHEN duplicate_column THEN RAISE NOTICE 'column <column_name> already exists in <table_name>.';
        END;
    END;
$$

您不能将这些作为参数传递,您需要在客户端的字符串中进行变量替换,但这是一个自包含查询,它只在列已经存在时发出消息,如果列不存在则添加,并且在出现其他错误(如无效的数据类型)时将继续失败。

如果这些是来自外部来源的随机字符串,我不推荐使用这些方法中的任何一种。无论您使用哪种方法(作为查询执行的客户端或服务器端动态字符串),它都会给您带来灾难,因为它会使您遭受SQL注入攻击。

票数 147
EN

Stack Overflow用户

发布于 2016-08-02 21:33:08

对于Postgres 9.6,可以使用选项if not exists来完成此操作

代码语言:javascript
运行
复制
ALTER TABLE table_name ADD COLUMN IF NOT EXISTS column_name INTEGER;
票数 514
EN

Stack Overflow用户

发布于 2020-02-20 09:41:23

对于那些使用Postgre 9.5+的人(我相信你们中的大多数人都这样做),有一个非常简单干净的解决方案。

代码语言:javascript
运行
复制
ALTER TABLE if exists <tablename> add if not exists <columnname> <columntype>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12597465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档