

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# CANCEL
<a name="r_CANCEL"></a>

現在実行中のデータベースクエリをキャンセルします。

CANCEL コマンドは実行中のクエリのプロセス ID またはセッション ID を必要とし、クエリがキャンセルされたことを確認する確認メッセージを表示します。

## 必要な権限
<a name="r_CANCEL-privileges"></a>

CANCEL に必要な権限を以下に示します。
+ 自身のクエリをキャンセルしているスーパーユーザー
+ ユーザーのクエリをキャンセルしているスーパーユーザー
+ CANCEL の権限を持ち、ユーザーのクエリをキャンセルしているユーザー
+ 自身のクエリをキャンセルしているユーザー

## 構文
<a name="r_CANCEL-synopsis"></a>

```
CANCEL process_id [ 'message' ]
```

## パラメータ
<a name="r_CANCEL-parameters"></a>

 *process\$1id*   
Amazon Redshift クラスターで実行されているクエリをキャンセルするには、キャンセルするクエリに対応する [STV\$1RECENTS](r_STV_RECENTS.md) の `pid` (プロセス ID) を使用します。  
Amazon Redshift Serverless ワークグループで実行されているクエリをキャンセルするには、キャンセルするクエリに対応する [SYS\$1QUERY\$1HISTORY](SYS_QUERY_HISTORY.md) の `session_id` を使用します。

'*message*'  
オプションの確認メッセージ。クエリのキャンセルが完了したときに表示されます。メッセージを指定しなかった場合、Amazon Redshift は確認としてデフォルトメッセージを表示します。メッセージは一重引用符で囲む必要があります。

## 使用に関する注意事項
<a name="r_CANCEL-usage-notes"></a>

クエリ ID **を指定してクエリをキャンセルすることはできません。クエリの**プロセス ID (PID) またはセッション ID **を指定する必要があります。ユーザーによって現在実行されているクエリのみキャンセルできます。スーパーユーザーはすべてのクエリをキャンセルできます。

複数のセッション内のクエリが同じテーブルでロックを保持する場合は、[PG\$1TERMINATE\$1BACKEND](PG_TERMINATE_BACKEND.md) 関数を使用してセッションの 1 つを終了できます。これを行うと、終了したセッションで現在実行されているトランザクションがすべてのロックを解除し、トランザクションがロールバックされます。[STV\$1LOCKS](r_STV_LOCKS.md) システムテーブルに対してクエリを実行して、現在保持しているロックを表示します。

Amazon Redshift は特定の内部イベントに続いてアクティブなセッションを再起動し、新しい PID を割り当てる場合があります。PID が変更されている場合は、次のようなエラーメッセージが表示されることがあります。

```
Session <PID> does not exist. The session PID might have changed. Check the stl_restarted_sessions system table for details.
```

新しい PID を見つけるには、[STL\$1RESTARTED\$1SESSIONS](r_STL_RESTARTED_SESSIONS.md)システムテーブルに対してクエリを実行し、`oldpid`列でフィルタリングします。

```
select oldpid, newpid from stl_restarted_sessions where oldpid = 1234;
```

## 例
<a name="r_CANCEL-examples"></a>

Amazon Redshift クラスターで現在実行されているクエリをキャンセルするには、キャンセルするクエリのプロセス ID を最初に取得します。現在実行されているすべてのクエリのプロセス ID を確認するには、次のコマンドを入力します。

```
select pid, starttime, duration,
trim(user_name) as user,
trim (query) as querytxt
from stv_recents
where status = 'Running';

pid |         starttime          | duration |   user   |    querytxt
-----+----------------------------+----------+----------+-----------------
802 | 2008-10-14 09:19:03.550885 |      132 | dwuser | select
venuename from venue where venuestate='FL', where venuecity not in
('Miami' , 'Orlando');
834 | 2008-10-14 08:33:49.473585 |  1250414 | dwuser | select *
from listing;
964 | 2008-10-14 08:30:43.290527 |   326179 | dwuser | select
sellerid from sales where qtysold in (8, 10);
```

クエリテキストをチェックし、キャンセルするクエリに対応するプロセス ID (PID) を確認します。

次のコマンドを入力して、PID 802 を使用してクエリをキャンセルします。

```
cancel 802;
```

クエリが実行されていたセッションは、次のメッセージを表示します。

```
ERROR:  Query (168) cancelled on user's request
```

ここでは、`168`はクエリ ID です (クエリをキャンセルするために使用されるプロセス ID ではありません)。

また、デフォルトメッセージの代わりに表示するカスタム確認メッセージを指定することもできます。カスタムメッセージを指定するには、CANCEL コマンドの最後に一重引用符で囲んだメッセージを付けます。

```
cancel 802 'Long-running query';
```

クエリが実行されていたセッションは、次のメッセージを表示します。

```
ERROR:  Long-running query
```