小编典典

如果PostgreSQL中不存在该如何添加列?

sql

问题很简单。如何将列添加x到表中y,但仅当x列不存在时才添加?我在这里只找到解决方案,如何检查列是否存在。

SELECT column_name 
FROM information_schema.columns 
WHERE table_name='x' and column_name='y';

阅读 146

收藏
2021-05-05

共1个答案

小编典典

是使用“ DO”语句的简短版本:

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注入攻击,因此这将是灾难的根源。

2021-05-05