チェックを実行するトリガを作成しているときに例外が発生しました。これを行うには、テーブル名だけを文字列として持つため、動的呼び出しを使用する必要があります。私はPostgreSQLを使用していますが、コマンドの実行方法を理解することはできません。私がこれをするとき:PL/PgSQL動的サブクエリ
CREATE OR REPLACE FUNCTION bleep() RETURNS table(id INT) AS $bleep$
BEGIN
RETURN QUERY EXECUTE 'SELECT (id) from Applicant';
END;
$bleep$ LANGUAGE plpgsql;
SELECT * from bleep();
それは完璧に動作し、私は申請者からIDのテーブルを取り戻す。私が行うときしかし、これは:
CREATE OR REPLACE FUNCTION bleep() RETURNS BOOLEAN AS $bleep$
BEGIN
IF (EXISTS (EXECUTE 'SELECT (id) from Applicant')) THEN
RETURN TRUE;
ELSE
RETURN FALSE;
END IF;
END;
$bleep$ LANGUAGE plpgsql;
それは私に語った:
ERROR: syntax error at or near "EXECUTE" Position: 87
これは私がこの作品と私はドキュメントとガイドの多くを読んだかを把握するために作られただけのおもちゃの一例です。このおもちゃの例を理解できれば、テーブル名をハードコーディングして試してみたので、完全なトリガを作れます。どうすればこの作品を作れますか?
関連のない、しかし:括弧の間に列名を置くことが習慣に得ることはありません。 '(id)'と 'id'は同じものですが、'(a、b) 'と' a、b'は非常に異なっています。 –
*正確に何を試そうとしていますか?与えられたテーブルに 'id'という名前の列が存在するかどうかまたは、テーブルに行があるかどうかを確認します。最良の解決策は、この重要な情報に依存します。 (そして、あなたはPostgresのバージョンを宣言していません) –