dblink_exec — リモートデータベースでコマンドを実行します
dblink_exec(text connname, text sql [, bool fail_on_error]) returns text dblink_exec(text connstr, text sql [, bool fail_on_error]) returns text dblink_exec(text sql [, bool fail_on_error]) returns text
dblink_exec
はリモートデータベースでコマンド(つまり行を返さない任意のSQL文)を実行します。
2つのtext
型の引数が与えられた場合、一番目の引数はまず永続接続の名前を検索するために使われます。
もし見つかれば、コマンドがその接続上で実行されます。
見つからなければ、一番目の引数はdblink_connect
用の接続情報文字列として扱われ、このコマンド実行時と同様に指定された接続が開きます。
connname
使用する接続の名前です。 無名の接続を使用する場合はこのパラメータを省略します。
connstr
上でdblink_connect
で説明した接続情報文字列です。
sql
例えばinsert into foo values(0, 'a', '{"a0","b0","c0"}')
といった、リモートデータベースで実行させるSQL問い合わせです。
fail_on_error
真(省略時のデフォルト)の場合、接続のリモート側で発生したエラーによりローカル側でもエラーが発生します。
偽の場合リモート側のエラーはローカル側にはNOTICEとして報告され、この関数の戻り値はERROR
になります。
状態、つまりコマンドの状態またはERROR
を返します。
SELECT dblink_connect('dbname=dblink_test_standby'); dblink_connect ---------------- OK (1 row) SELECT dblink_exec('insert into foo values(21, ''z'', ''{"a0","b0","c0"}'');'); dblink_exec ----------------- INSERT 943366 1 (1 row) SELECT dblink_connect('myconn', 'dbname=regression'); dblink_connect ---------------- OK (1 row) SELECT dblink_exec('myconn', 'insert into foo values(21, ''z'', ''{"a0","b0","c0"}'');'); dblink_exec ------------------ INSERT 6432584 1 (1 row) SELECT dblink_exec('myconn', 'insert into pg_class values (''foo'')',false); NOTICE: sql error DETAIL: ERROR: null value in column "relnamespace" violates not-null constraint dblink_exec ------------- ERROR (1 row)