3.8 KiB
slug | sidebar_position | sidebar_label |
---|---|---|
/ja/sql-reference/statements/watch | 53 | WATCH |
WATCH ステートメント (試験的)
:::note
これは、将来のリリースで後方互換性のない変更が行われる可能性のある試験的な機能です。ライブビューと WATCH
クエリを有効にするには、set allow_experimental_live_view = 1
を使用してください。
:::
WATCH [db.]live_view
[EVENTS]
[LIMIT n]
[FORMAT format]
WATCH
クエリは、ライブビューテーブルから継続的なデータ取得を行います。LIMIT
句が指定されていない場合、ライブビューからクエリ結果の無限ストリームを提供します。
WATCH [db.]live_view [EVENTS] [LIMIT n] [FORMAT format]
仮想カラム
クエリ結果内の仮想カラム _version
は、現在の結果バージョンを示します。
例:
CREATE LIVE VIEW lv WITH REFRESH 5 AS SELECT now();
WATCH lv;
┌───────────────now()─┬─_version─┐
│ 2021-02-21 09:17:21 │ 1 │
└─────────────────────┴──────────┘
┌───────────────now()─┬─_version─┐
│ 2021-02-21 09:17:26 │ 2 │
└─────────────────────┴──────────┘
┌───────────────now()─┬─_version─┐
│ 2021-02-21 09:17:31 │ 3 │
└─────────────────────┴──────────┘
...
デフォルトでは、要求されたデータはクライアントに返されますが、INSERT INTO と組み合わせて使用することで、異なるテーブルに転送できます。
例:
INSERT INTO [db.]table WATCH [db.]live_view ...
EVENTS 句
EVENTS
句を使用すると、WATCH
クエリの簡略版を取得できます。この場合、クエリ結果の代わりに最新のクエリ結果バージョンのみが返されます。
WATCH [db.]live_view EVENTS;
例:
CREATE LIVE VIEW lv WITH REFRESH 5 AS SELECT now();
WATCH lv EVENTS;
┌─version─┐
│ 1 │
└─────────┘
┌─version─┐
│ 2 │
└─────────┘
...
LIMIT 句
LIMIT n
句は、WATCH
クエリが終了する前に待機する更新の数を指定します。デフォルトでは更新の数に制限はなく、したがってクエリは終了しません。値が 0
の場合、WATCH
クエリは新しいクエリ結果を待機しないことを示し、クエリ結果が評価され次第すぐに返されます。
WATCH [db.]live_view LIMIT 1;
例:
CREATE LIVE VIEW lv WITH REFRESH 5 AS SELECT now();
WATCH lv EVENTS LIMIT 1;
┌─version─┐
│ 1 │
└─────────┘
FORMAT 句
FORMAT
句は、SELECT と同じ方法で機能します。
:::note
HTTP インターフェースを介して ライブビュー テーブルを監視する際は、JSONEachRowWithProgress フォーマットを使用するべきです。進行状況メッセージは、クエリ結果が変化するまで長時間維持される HTTP 接続を保つために出力に追加されます。進行状況メッセージの間隔は、live_view_heartbeat_interval 設定を使用して制御されます。
:::