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.