2016-08-02 11 views
0

私はテーブルabonnementとカラムtopicと他のカラムを持っています。私は列の値を更新したいtopic。しかし、更新する前に、私はこの列が存在するかどうかを確認して、私のチームの他の開発者とこのスクリプトを使用したいと思っています。存在する場合、私は更新する、そうでなければ、私はこの列を作成し、更新後にする必要があります。ここで は私のスクリプトです:update/exist column Postgresql

ERREUR: erreur de syntaxe sur ou près de « IF » 
LINE 1: IF EXISTS (SELECT 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; 

私はエラーが発生しましたか?

+2

からコードを得ました。 –

+0

私は彼らが 'if'を使うときにいくつかのスクリプトを見たので。それ以外はどうすれば解決できるの? – josef

+0

そのような回避策を実装する代わりに、スキーマの変更を展開する方法を変更する必要があります。列が存在するかどうかわからないということは、スキーマ移行を管理および展開するための適切なプロセスがないことを示します。 LiquibaseやFlywayのようなツールをチェックしてください。データベースが定義された状態になっていることを確認することは、はるかに良い解決策です。 –

答えて

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; $$ 

私はSQLには `if`はありませんHow to add column if not exists on PostgreSQL?

+1

あなたの答えをありがとう。それは解決しました! – josef