Aracılığıyla paylaş


Tetikleyiciler

Azure Cosmos DB , belge, grafik ve anahtar-değer veri modellerini destekleyen genel olarak dağıtılmış çok modelli bir veritabanıdır. Bu bölümdeki içerik, REST aracılığıyla SQL API'sini kullanarak tetikleyici kaynaklarını yönetmeye yöneliktir.

Tetikleyiciler, belge oluşturmadan önce (ön tetikleyiciler) ve sonra (tetikleyici sonrası) oluşturulabilen, silinebilen ve değiştirilebilen uygulama mantığı parçalarıdır. Tetikleyiciler JavaScript ile yazılır. Hem ön hem de son tetikleyiciler parametre almaz. Saklı yordamlar gibi tetikleyiciler de bir koleksiyonun sınırları içinde yaşar ve bu nedenle uygulama mantığını koleksiyona açıklar.

Saklı yordamlara benzer şekilde tetikleyiciler kaynağının da sabit bir şeması vardır. Body özelliği uygulama mantığını içerir. Aşağıdaki örnekte bir tetikleyicinin JSON yapısı gösterilmektedir.

{  
"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"  
}  
  
Özellik Açıklama
id Gereklidir. Bu bir kullanıcı ayarlanabilir özelliğidir. Tetikleyiciyi tanımlamak için kullanılan benzersiz addır. Kimlik 255 karakteri aşmamalıdır.
Vücut Gereklidir. Bu bir kullanıcı ayarlanabilir özelliğidir. Tetikleyicinin gövdesidir.
triggerOperation Gereklidir. Tetikleyiciyi çağıran işlem türüdür. Kabul edilebilir değerler şunlardır: Tümü, Ekle, Değiştir ve Sil.
triggerType Gereklidir. Tetikleyicinin tetiklenme zamanını belirtir. Kabul edilebilir değerler şunlardır: Ön ve Deftere Nakl. Ön tetikleyiciler bir işlemden önce tetiklerken Post bir işlemden sonra tetikler.
_Kurtulmak Sistem tarafından oluşturulan bir özelliktir. Kaynak kimliği (_rid), kaynak modelinde kaynak yığını başına da hiyerarşik olan benzersiz bir tanımlayıcıdır. Tetikleyici kaynağının yerleştirilmesi ve gezintisi için dahili olarak kullanılır.
_Ts Sistem tarafından oluşturulan bir özelliktir. Kaynağın son güncelleştirilmiş zaman damgasını belirtir. Değer bir zaman damgasıdır.
_Kendini Sistem tarafından oluşturulan bir özelliktir. Kaynak için benzersiz olarak adreslenebilir URI'dir.
_Etag İyimser eşzamanlılık denetimi için gereken kaynak etag'ini belirten sistem tarafından oluşturulan bir özelliktir.

Görevler

Tetikleyicilerle aşağıdakileri yapabilirsiniz:

Tetikleyici çağırma da dahil olmak üzere UDF'lerin nasıl çalıştığı hakkında bilgi için bkz. Azure Cosmos DB programlama: Saklı yordamlar, tetikleyiciler ve UDF'ler.

Ayrıca Bkz.