PostgreSQLにテーブルを作成するDDLスクリプトがあります。PostgreSQLのSQLスクリプト実行を停止するには?
たとえば、最初のテーブルが存在する場合は、 PostgreSQL(スクリプト内)のSQLスクリプト実行を停止するにはどうすればよいですか?
PostgreSQLにテーブルを作成するDDLスクリプトがあります。PostgreSQLのSQLスクリプト実行を停止するには?
たとえば、最初のテーブルが存在する場合は、 PostgreSQL(スクリプト内)のSQLスクリプト実行を停止するにはどうすればよいですか?
あなたは条件に基づいてスクリプトを中止したい場合は、あなたがそれを行うことができますエラーが発生DO
ブロックを使用して:
do
$$
declare
l_count integer;
begin
select count(*)
into l_count
from information_schema.tables
where table_name = 'foobar'
and table_schema = 'public';
if (l_count > 0) then
raise exception 'Table foobar already exists!';
end if;
end;
$$
これは、エラーが発生した場合、あなたのSQLクライアントがスクリプトを中止することが必要です。
別のオプションは、テーブルが既にcreate table if not exists ....
を使用して存在している場合、それは何もしないようにスクリプトを変更することです。
しかし、それはあなたが達成しようとしているものによって異なります。
PostgreSQLデータベースは、各クエリをappartedプロセスで実行します。プロセス番号を調べる必要があります。私はpg_activityを使用しますが、実行することができます。
SELECT datname,procpid,current_query FROM pg_stat_activity;
あなたはPIDを見つけたら、あなたはシェルでそれを殺すことができます。
kill $PID #or
kill -9 $PID
それは情報の素晴らしい部分ですが、それはSQLスクリプト内にすることはできません、それはできますか? –
'pg_cancel_backend()'(または 'pg_terminate_backend()')でも同じことをするコマンドラインでkillを行う必要はありません –
そして 'kill -KILL'を宣伝しないでください – wildplasser
アイデアは:あります最初のテーブルがすでに存在する場合は、スクリプト全体を実行する必要はありません。これは、最も単純で素早いdbの初期化だけです。 –