翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon QLDB の FROM (INSERT、REMOVE、または SET) コマンド
重要
サポート終了通知: 既存のお客様は、07/31/2025 のサポート終了まで Amazon QLDB を使用できます。詳細については、「Amazon QLDB 台帳を Amazon Aurora PostgreSQL に移行する
Amazon QLDB では、FROM で始まるステートメントは、PartiQL 拡張機能です。この拡張機能を使用すると、ドキュメント内の特定の要素を挿入および削除できます。このステートメントを使用して、UPDATE コマンドと同様に、ドキュメント内の既存の要素を更新することもできます。
注記
特定のテーブルでこの PartiQL コマンドを実行するためのアクセスを制御する方法については、「Amazon QLDB の標準アクセス許可モードの開始方法」を参照してください。
構文
FROM-INSERT
既存のドキュメント内で新しい要素を挿入します。新しいトップレベルドキュメントをテーブルに挿入するには、INSERT を使用する必要があります。
FROMtable_name[ AStable_alias] [ BYid_alias] [ WHEREcondition] INSERT INTOelementVALUEdata[ ATkey_name]
FROM-REMOVE
ドキュメント内の既存の要素を削除するか、トップレベルドキュメント全体を削除します。後者は、意味的には従来の DELETE 構文と同じです。
FROMtable_name[ AStable_alias] [ BYid_alias] [ WHEREcondition] REMOVEelement
FROM-SET
ドキュメント内の 1 つ以上の要素を更新します。要素が存在しない場合は、挿入されます。これは、意味的には従来の UPDATE 構文と同じです。
FROMtable_name[ AStable_alias] [ BYid_alias] [ WHEREcondition] SETelement=data[,element=data, ... ]
パラメータ
- table_name
-
変更するデータを含むユーザーテーブルの名前。DML ステートメントは、デフォルトのユーザービューでのみサポートされています。各ステートメントは、単一のテーブルでのみ実行できます。
この句には、指定したテーブルにネストされている 1 つ以上のコレクションも含めることができます。詳細については、ネストされているコレクションを参照してください。
- AS
table_alias -
(オプション) 変更するテーブルに該当するユーザー定義のエイリアス。
SET句、REMOVE句、INSERT INTO句、またはWHERE句で使用されるソースエイリアスは、いずれもFROM句で宣言する必要があります。ASキーワードはオプションです。 - BY
id_alias -
(オプション) 結果セット内の各ドキュメントの
idメタデータフィールドにバインドされる、ユーザー定義のエイリアス。このエイリアスは、BYキーワードを使用してFROM句で宣言する必要があります。これは、デフォルトのユーザービューへのクエリ実行中にドキュメント ID をフィルタ処理する場合に便利です。詳細については、「BY 句を使用したドキュメント ID のクエリの実行」を参照してください。 - WHERE
condition -
修正されるドキュメントの選択条件。
注記
WHERE句を省略すると、テーブル内のすべてのドキュメントが修正されます。 element-
作成または変更するドキュメントの要素。
データ-
要素の新しい値。
- AT
key_name -
修正されるドキュメント内に追加されるキー名。対応する
VALUEをキー名とともに指定する必要があります。これは、新しい値をドキュメント内の特定の位置ATに挿入する場合に必要です。
ネストされているコレクション
DML ステートメントは 1 つのテーブルに対してのみ実行できますが、そのテーブル内のドキュメントにネストされているコレクションを追加のソースとして指定できます。ネストされたコレクションに対して宣言した各エイリアスは、WHERE 句で使用できます。さらに、SET、INSERT
INTO、REMOVE のいずれかの句で使用できます。
たとえば、次のステートメントの FROM ソースには、VehicleRegistration テーブルおよびネストされている Owners.SecondaryOwners 構造の両方が含まれます。
FROM VehicleRegistration r, @r.Owners.SecondaryOwners o WHERE r.VIN = '1N4AL11D75C109151' AND o.PersonId = 'abc123' SET o.PersonId = 'def456'
次の例では、VIN が '1N4AL11D75C109151' である VehicleRegistration ドキュメント内で、SecondaryOwners リスト内の PersonId が 'abc123' である特定の要素を更新します。この式を使用すると、リストの要素を、インデックスではなく値で指定できます。
戻り値
documentId - 更新または削除した各ドキュメントの ID。
例
ドキュメント内の要素を変更します。要素が存在しない場合は、挿入されます。
FROM Vehicle AS v WHERE v.VIN = '1N4AL11D75C109151' AND v.Color = 'Silver' SET v.Color = 'Shiny Gray'
要素を変更または挿入し、システムによって割り当てられたドキュメント id メタデータフィールドでフィルタ処理します。
FROM Vehicle AS v BY v_id WHERE v_id = 'documentId' SET v.Color = 'Shiny Gray'
ドキュメント内の Owners.SecondaryOwners リストで先頭要素の PersonId フィールドを修正します。
FROM VehicleRegistration AS r WHERE r.VIN = '1N4AL11D75C109151' SET r.Owners.SecondaryOwners[0].PersonId = 'abc123'
ドキュメント内の既存の要素を削除します。
FROM Person AS p WHERE p.GovId = '111-22-3333' REMOVE p.Address
ドキュメント全体をテーブルから削除します。
FROM Person AS p WHERE p.GovId = '111-22-3333' REMOVE p
VehicleRegistration テーブルでドキュメント内の Owners.SecondaryOwners リストの先頭要素を削除します。
FROM VehicleRegistration AS r WHERE r.VIN = '1N4AL11D75C109151' REMOVE r.Owners.SecondaryOwners[0]
{'Mileage':26500} を最上位の名前と値のペアとして Vehicle テーブルのドキュメント内に挿入します。
FROM Vehicle AS v WHERE v.VIN = '1N4AL11D75C109151' INSERT INTO v VALUE 26500 AT 'Mileage'
VehicleRegistration テーブルのドキュメントの Owners.SecondaryOwners フィールドに、名前と値のペアとして {'PersonId':'abc123'} を追加します。このステートメントが有効になるには、Owners.SecondaryOwners が既存であり、リストデータ型であることが必要です。そうでない場合には、INSERT INTO 句内にキーワード AT が必要です。
FROM VehicleRegistration AS r WHERE r.VIN = '1N4AL11D75C109151' INSERT INTO r.Owners.SecondaryOwners VALUE { 'PersonId' : 'abc123' }
ドキュメント内の既存の Owners.SecondaryOwners リストで先頭要素として {'PersonId':'abc123'} を挿入します。
FROM VehicleRegistration AS r WHERE r.VIN = '1N4AL11D75C109151' INSERT INTO r.Owners.SecondaryOwners VALUE {'PersonId' : 'abc123'} AT 0
ドキュメント内の既存の Owners.SecondaryOwners リストに名前と値のペアを複数追加します。
FROM VehicleRegistration AS r WHERE r.VIN = '1N4AL11D75C109151' INSERT INTO r.Owners.SecondaryOwners << {'PersonId' : 'abc123'}, {'PersonId' : 'def456'} >>
ドライバーを使用したプログラムでの実行
QLDB ドライバーを使用してこのステートメントをプログラムで実行する方法については、「ドライバーの開始方法」の以下のチュートリアルを参照してください。
-
Java: クイックスタートチュートリアル | クックブックリファレンス
-
.NET: クイックスタートチュートリアル | クックブックリファレンス
-
Go: クイックスタートチュートリアル | クックブックリファレンス
-
Node.js: クイックスタートチュートリアル | クックブックリファレンス
-
Python: クイックスタートチュートリアル | クックブックリファレンス