私は、置換アクションでプレトリガを持っています。 Azureポータルでドキュメントを更新すると、SQL Serverトリガとは異なり、DocumentDBトリガは起動しません。ポータルから設定が欠落していますか?これがDocumentDBのトリガですアプリケーションコードからのみ起動できますか?DocumentDBなぜAzureポータルからトリガを起動できないのですか?
ありがとうございます!
私は、置換アクションでプレトリガを持っています。 Azureポータルでドキュメントを更新すると、SQL Serverトリガとは異なり、DocumentDBトリガは起動しません。ポータルから設定が欠落していますか?これがDocumentDBのトリガですアプリケーションコードからのみ起動できますか?DocumentDBなぜAzureポータルからトリガを起動できないのですか?
ありがとうございます!
ご理解の方が正しいです。ポータルからこの機能を許可する技術的なブロッカーはなく、現在欠けているだけです。
それは確かに他のデータベースでは一般的です&削除操作を、作成するようhttps://feedback.azure.com/forums/263030-documentdb
DocumentDbのデータベース・トリガーは自動的に、DMLを経由して提起されていません@置かれるべき有効な要求です。
つまり、アプリケーションコードで行う各データベース操作に対してトリガーを指定する必要があります。また、トリガーは同じタイプでなければなりません。つまり、挿入操作では、タイプを置換するのではなく作成トリガー・タイプしか使用できません。
私は暗い関数documentdb出力バインディングを持っているので、自分でDML操作を行いません。デバッグを大量に浪費した後、データベースコレクションの下にストアドプロシージャを作成し、Azureファンクションコードを介して以下のコードを使用して呼び出しました。
これは完璧に動作します:
// call stored procedure, nodejs, azure
'use strict';
var DocumentClient = require('documentdb').DocumentClient;
var client = new DocumentClient(process.env.DB_HOST, {masterKey: process.env.DB_M_KEY});
var sprocLink =
'dbs/' + sprocDbName1 +
'/colls/' + sprocCollName1 +
'/sprocs/' + sprocName1;
var sprocParams = {
key1: "val1",
key2: "val2"
};
client
.executeStoredProcedure(
sprocLink,
sprocParams1,
function (err, results) {
if (err) {
context.log.error('err');
context.log.error(err);
return;
}
context.log.verbose('results');
context.log.verbose(results);
return;
});
注:、DB_M_KEY、sprocDbName1(あなたのDB名)、sprocCollName1(自分のコレクション名、sprocName1(あなたのストアドプロシージャを:DB_HOST(443 /で終わるURL)の値を与えます名)上記実行する前に
、ストアドプロシージャ(SPROC)はDocumentDbデータベースコレクション内で作成する必要があります。
希望に役立ちます。意味で
ime、DocumentDBStudio(https://github.com/mingaliu/DocumentDBStudio/releases/tag/0.70)を使ってトリガーをテストする –
ありがとうございます!私はちょうど要求を掲示した。ところで、確かめたいのは、プリトリガやポストトリガに関係なく、すべてのトリガがCreate、Delete、またはReplaceアクションで同じトランザクションで実行されるということです。作成、削除、または置換中に何かが失敗した場合、プリトリガまたはポストトリガはロールバックされますか? –
はい、CRUD +プレ/ポストトリガ中のエラーはロールバックされます。 –