Gatilhos

O Azure Cosmos DB é um banco de dados multimodelo distribuído globalmente que dá suporte aos modelos de dados de documento, grafo e chave-valor. O conteúdo nesta seção destina-se ao gerenciamento de recursos de gatilho usando a API do SQL por meio do REST.

Os gatilhos são partes da lógica do aplicativo que podem ser executadas antes (pré-gatilhos) e depois da criação, exclusão e substituição de um documento (pós-gatilhos). Os gatilhos são escritos em JavaScript. Os pré e pós-gatinho não aceitam parâmetros. Como procedimentos armazenados, aciona em tempo real dentro dos limites de uma coleção, restringindo assim a lógica do aplicativo à coleção.

Assim como procedimentos armazenados, o recurso dos gatilhos tem um esquema fixo. A propriedade Corpo contém a lógica do aplicativo. O exemplo a seguir ilustra a construção JSON de um gatilho.

{  
"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"  
}  
  
Propriedade Descrição
id Obrigatórios. É uma propriedade configurável pelo usuário. É o nome exclusivo usado para identificar o gatilho. A ID não deve exceder 255 caracteres.
body Obrigatórios. É uma propriedade configurável pelo usuário. É o corpo do gatilho.
triggerOperation Obrigatórios. É o tipo de operação que invoca o gatilho. Os valores aceitáveis são: All, Insert, Replace e Delete.
triggerType Obrigatórios. Isso especifica quando o gatilho é acionado. Os valores aceitáveis são: Pre e Post. Os pré-gatilhos são disparados antes de uma operação enquanto Post dispara após uma operação.
_Livrar É uma propriedade gerada pelo sistema. A ID do recurso (_rid) é um identificador exclusivo que também é hierárquico de acordo com a pilha de recursos no modelo de recurso. Ela é usada internamente para posicionamento e navegação do recurso de gatilho.
_Ts É uma propriedade gerada pelo sistema. Especifica o último carimbo de data/hora atualizado do recurso. O valor é um carimbo de data/hora.
_Auto É uma propriedade gerada pelo sistema. É o URI endereçável exclusivo do recurso.
_Etag É uma propriedade gerada pelo sistema que especifica a etag de recurso necessária para o controle de simultaneidade otimista.

Tarefas

Você pode fazer o seguinte com gatilhos:

Para obter informações sobre como as UDFs funcionam, incluindo a invocação de um gatilho, consulte Programação do Azure Cosmos DB: procedimentos armazenados, gatilhos e UDFs.

Consulte Também