トリガー

Azure Cosmos DB は、ドキュメント、グラフ、キー値のデータ モデルをサポートするグローバルに分散されたマルチモデル データベースです。 このセクションの内容は、REST 経由で SQL API を使用してトリガー リソースを管理するための内容です。

トリガーは、ドキュメントの作成、削除、置換の前 (事前トリガー) と後 (ポスト トリガー) で実行できるアプリケーション ロジックの一部です。 トリガーは、JavaScript で記述します。 プレおよびポストトリガーは、いずれもパラメーターを受け取りません。 トリガーは、ストアド プロシージャのようにコレクション内部に存在するため、アプリケーション ロジックはそのコレクション内に制限されています。

ストアド プロシージャと同様、トリガー リソースは固定スキーマを持ちます。 body プロパティに、アプリケーション ロジックが含まれています。 次の例は、トリガーの JSON 構造を示しています。

{  
"id":"PostTrigger-UpdateMetaAll",  
"body": "  
function updateMetadata() {  
        var context = getContext();  
        var collection = context.getCollection();  
        var response = context.getResponse();  
        var createdDocument = response.getBody();  
  
        // query for metadata document  
        var filterQuery = 'SELECT * FROM root r WHERE r.id = "_metadata"';  
        var accept = collection.queryDocuments(collection.getSelfLink(), filterQuery,  
            updateMetadataCallback);  
        if(!accept) throw "Unable to update metadata, abort";  
  
        function updateMetadataCallback(err, documents, responseOptions) {  
            if(err) throw new Error("Error" + err.message);  
                     if(documents.length != 1) throw 'Unable to find metadata document';  
                     var metadataDocument = documents[0];  
  
                     // update metadata  
                     metadataDocument.createdDocuments += 1;  
                     metadataDocument.createdNames += " " + createdDocument.id;  
                     var accept = collection.replaceDocument(metadataDocument._self,  
                           metadataDocument, function(err, docReplaced) {  
                                  if(err) throw "Unable to update metadata, abort";  
                           });  
                     if(!accept) throw "Unable to update metadata, abort";  
                     return;                      
        }  
}  
",  
"_rid":"hLEEAI1YjgcBAAAAAAAAgA==",  
"_ts":1408058682,  
"_self":"dbs\/hLEEAA==\/colls\/hLEEAI1Yjgc=\/udfs\/hLEEAI1YjgcBAAAAAAAAgA==\/",  
"_etag":"00004100-0000-0000-0000-53ed453a0000"  
}  
  
プロパティ 説明
id 必須。 これはユーザー設定可能なプロパティです。 トリガーの識別に使用される一意の名前です。 ID は 255 文字以内にする必要があります。
body 必須。 これはユーザー設定可能なプロパティです。 トリガーの本体です。
triggerOperation 必須。 トリガーを呼び出す操作の種類です。 許容される値は、 AllInsertReplaceDelete です。
triggerType 必須。 これは、トリガーがいつ発生したかを指定します。 許容される値 は Pre とPost です事前 トリガーは操作の前に起動し、 Post は操作の後にトリガーします。
_解消 これは、システムによって生成されるプロパティです。 リソース ID (_rid) は、リソース モデルのリソース スタックごとに階層化される一意識別子です。 トリガー リソースの配置およびナビゲーションのために内部的に使用されます。
_Ts これは、システムによって生成されるプロパティです。 リソースの最終更新タイムスタンプを示します。 値は、タイムスタンプです。
_自己 これは、システムによって生成されるプロパティです。 リソースの一意のアドレス指定が可能な URI です。
_Etag これは、オプティミスティック コンカレンシー制御に必要なリソース etag を指定するシステム生成プロパティです。

タスク

トリガーを使用して、次の操作を行うことができます。

トリガーの呼び出しを含む UDF のしくみについては、「 Azure Cosmos DB プログラミング: ストアド プロシージャ、トリガー、UDF」を参照してください

参照