Триггеры

Azure Cosmos DB — это глобально распределенная база данных с несколькими моделями, которая поддерживает модели данных документов, графов и ключей и значений. Содержимое этого раздела предназначено для управления ресурсами триггеров с помощью API SQL через REST.

Триггеры — это части логики приложения, которые могут выполняться до (предварительные триггеры) и после (после триггеров) создания, удаления и замены документа. Триггеры написаны на языке JavaScript. Триггеры pre и post не принимают никакие параметры. Подобно хранимым процедурам, триггеры содержатся в пределах коллекции, тем самым ограничивая логику приложения до пределов коллекции.

Подобно хранимым процедурам, у ресурса триггеров есть имеет фиксированная схема. В тексте свойства содержится логика приложения. В следующем примере показана конструкция 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"  
}  
  
Свойство Описание
идентификатор Обязательный. Это настраиваемое пользователем свойство. Это уникальное имя, используемое для идентификации триггера. Длина идентификатора не должна превышать 255 символов.
body Обязательный. Это настраиваемое пользователем свойство. Это тело триггера.
triggerOperation Обязательный. Это тип операции, которая вызывает триггер. Допустимые значения: All, Insert, Replace и Delete.
triggerType Обязательный. Это указывает, когда активируется триггер. Допустимые значения: Pre и Post. Триггеры Pre срабатывают перед операцией, а Post — после операции.
_rid Это свойство, созданное системой. Идентификатор ресурса (_rid) — это уникальный идентификатор, который также является иерархическим для стека ресурсов в модели ресурсов. Он используется системой для размещения и перемещения по ресурсам триггера.
_Ts Это свойство, созданное системой. Оно представляет метку времени последнего обновления ресурса. Значение — метка времени.
_Самостоятельно Это свойство, созданное системой. Это уникальный адресуемый универсальный код ресурса.
_etag Это системное свойство, указывающее тег ресурса, необходимый для управления оптимистическим параллелизмом.

Задания

С помощью триггеров можно выполнить следующие действия:

Сведения о том, как работают определяемые пользователем функции, включая вызов триггера, см. в статье Программирование Azure Cosmos DB: хранимые процедуры, триггеры и определяемые пользователем функции.

См. также: