RAISE SQLSTATE
動的命令でPostgreSQLでトリガーを使用する方法を知りたいですか?
IF i>0 THEN
RAISE SQLSTATE '23505' USING MESSAGE = 'la planète est déjà occupée (planet_non_free)=(%, %, %)', NEW.galaxie, NEW.systeme_solaire, NEW.position;
END IF;
うまくいきません。
RAISE SQLSTATE
動的命令でPostgreSQLでトリガーを使用する方法を知りたいですか?
IF i>0 THEN
RAISE SQLSTATE '23505' USING MESSAGE = 'la planète est déjà occupée (planet_non_free)=(%, %, %)', NEW.galaxie, NEW.systeme_solaire, NEW.position;
END IF;
うまくいきません。
使用することをお勧めします:
IF i > 0 THEN
RAISE SQLSTATE '23505'
USING MESSAGE = format('la planète est déjà occupée (planet_non_free)=(%s, %s, %s)', NEW.galaxie, NEW.systeme_solaire, NEW.position);
END IF;
次に、エラーメッセージは次のようになります。
la planète est déjà occupée (planet_non_free)=(<g>, <s>, <p>)
.. それ以外の:
("la planète est déjà occupée (planet_non_free)=(%, %, %)",<g>, <s>, <p>)
わかりました、私は解決策を見つけました。MESSAGE
値を括弧で囲むだけです:
そう :
IF i>0 THEN
RAISE SQLSTATE '23505' USING MESSAGE = 'la planète est déjà occupée (planet_non_free)=(%, %, %)', NEW.galaxie, NEW.systeme_solaire, NEW.position;
END IF;
になります:
IF i>0 THEN
RAISE SQLSTATE '23505' USING MESSAGE = ('la planète est déjà occupée (planet_non_free)=(%, %, %)', NEW.galaxie, NEW.systeme_solaire, NEW.position);
END IF;
MESSAGE
シンプルですが、動的なWeb の明示的な例は見当たりませんでした。
お役に立てれば
編集 :
申し訳ありませんが、正しい構文は次のとおりです。
IF i>0 THEN
RAISE SQLSTATE '23505' USING MESSAGE = 'la planète est déjà occupée (planet_non_free)=(' || NEW.galaxie || ',' || NEW.systeme_solaire || ',' || NEW.position || ')';
END IF;
%
withUSING MESSAGE
ステートメントは使えないようです。