トリガー
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 | 必須。 トリガーを呼び出す操作の種類です。 許容される値は、 All、 Insert、 Replace 、 Delete です。 |
triggerType | 必須。 これは、トリガーがいつ発生したかを指定します。 許容される値 は Pre とPost です。 事前 トリガーは操作の前に起動し、 Post は操作の後にトリガーします。 |
_解消 | これは、システムによって生成されるプロパティです。 リソース ID (_rid) は、リソース モデルのリソース スタックごとに階層化される一意識別子です。 トリガー リソースの配置およびナビゲーションのために内部的に使用されます。 |
_Ts | これは、システムによって生成されるプロパティです。 リソースの最終更新タイムスタンプを示します。 値は、タイムスタンプです。 |
_自己 | これは、システムによって生成されるプロパティです。 リソースの一意のアドレス指定が可能な URI です。 |
_Etag | これは、オプティミスティック コンカレンシー制御に必要なリソース etag を指定するシステム生成プロパティです。 |
タスク
トリガーを使用して、次の操作を行うことができます。
トリガーの呼び出しを含む UDF のしくみについては、「 Azure Cosmos DB プログラミング: ストアド プロシージャ、トリガー、UDF」を参照してください。