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.