更新/存在列Postgresql

时间:2016-08-02 13:13:30

标签: postgresql

我有一个表abonnement,其中包含列topic和其他列。我想更新列topic的值。但在更新之前,我想验证此列是否存在,以便将此脚本与我团队中的其他开发人员一起使用。如果存在,我会更新,否则,我必须创建此列并在更新后。 这是我的剧本:

IF EXISTS (select topic from abonnement) 
then 
update abonnement set topic ='valeurTopic'; 
else 
ALTER TABLE abonnement ADD COLUMN topic character varying; 
update abonnement set topic= 'valeurTopic';
end if;

我有一个错误:

ERREUR:  erreur de syntaxe sur ou près de « IF »
LINE 1: IF EXISTS (SELECT topic
    ^

有任何解决方案吗?

1 个答案:

答案 0 :(得分:0)

我会改变逻辑:

DO $$ 
    BEGIN
        BEGIN
            ALTER TABLE <table_name> ADD COLUMN <column_name> <column_type>;
        EXCEPTION
            WHEN duplicate_column THEN 
            UPDATE <table_name> SET <column_name> = 'valeurTopic';
    END;
END; $$

我从How to add column if not exists on PostgreSQL?

获得了代码