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.