Partilhar via


Acionadores

O Azure Cosmos DB é uma base de dados com vários modelos distribuída globalmente que suporta os modelos de dados de documentos, gráficos e chave-valor. O conteúdo nesta secção destina-se à gestão de recursos de acionador com a API SQL através de REST.

Os acionadores são partes da lógica da aplicação que podem ser executadas antes (pré-acionadores) e após a criação, eliminação e substituição (pós-acionadores) de um documento. Os acionadores são escritos em JavaScript. Os acionadores pré e pós não assumem parâmetros. Tal como os procedimentos armazenados, os acionadores residem dentro dos limites de uma coleção, limitando assim a lógica da aplicação à coleção.

Semelhante aos procedimentos armazenados, o recurso de acionadores tem um esquema fixo. A propriedade body contém a lógica da aplicação. O exemplo seguinte ilustra a construção JSON de um acionador.

{  
"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ório. É uma propriedade settable do utilizador. É o nome exclusivo utilizado para identificar o acionador. O ID não pode exceder os 255 carateres.
corpo Obrigatório. É uma propriedade settable do utilizador. É o corpo do acionador.
triggerOperation Obrigatório. É o tipo de operação que invoca o acionador. Os valores aceitáveis são: Todos, Inserir, Substituir e Eliminar.
triggerType Obrigatório. Isto especifica quando o acionador é acionado. Os valores aceitáveis são: Pre e Post. Aciona previamente o fogo antes de uma operação, enquanto Post é acionado após uma operação.
_rid É uma propriedade gerada pelo sistema. O ID do recurso (_rid) é um identificador exclusivo que também é hierárquico de acordo com a pilha de recursos no modelo de recursos. É utilizado internamente para colocação e navegação do recurso do acionador.
_ts É uma propriedade gerada pelo sistema. Especifica o último carimbo de data/hora atualizado do recurso. O valor é um carimbo de data/hora.
_self É uma propriedade gerada pelo sistema. É o URI endereçável exclusivamente para o recurso.
_etag É uma propriedade gerada pelo sistema que especifica a etag de recursos necessária para o controlo de simultaneidade otimista.

Tarefas

Pode fazer o seguinte com os acionadores:

Para obter informações sobre como funcionam os UDFs, incluindo invocar um acionador, veja Programação do Azure Cosmos DB: Procedimentos armazenados, acionadores e UDFs.

Consulte também