Desencadenadores

Azure Cosmos DB es una base de datos multimodelo distribuida globalmente que admite los modelos de datos de documento, gráfico y clave-valor. El contenido de esta sección es para administrar recursos de desencadenador mediante la API de SQL a través de REST.

Los desencadenadores son fragmentos de lógica de aplicación que se pueden ejecutar antes (desencadenadores previos) y después (posteriores) a la creación, eliminación y reemplazo de un documento. Los desencadenadores se escriben en JavaScript. Los desencadenadores previos y posteriores no toman parámetros. Al igual que los procedimientos almacenados, los desencadenadores se encuentran dentro de los confines de una colección, por lo que restringen la lógica de aplicación a la colección.

De forma similar a los procedimientos almacenados, el recurso de desencadenadores tiene un esquema fijo. La propiedad del cuerpo contiene la lógica de aplicación. En el ejemplo siguiente se muestra la construcción JSON de un desencadenador:

{  
"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"  
}  
  
Propiedad Descripción
id Necesario. Es una propiedad que se puede establecer por el usuario. Es el nombre único usado para identificar el desencadenador. El identificador no debe superar los 255 caracteres.
body Necesario. Es una propiedad que se puede establecer por el usuario. Es el cuerpo del desencadenador.
triggerOperation Necesario. Es el tipo de operación que invoca el desencadenador. Los valores aceptables son: All, Insert, Replace y Delete.
triggerType Necesario. Esto especifica cuándo se desencadena el desencadenador. Los valores aceptables son: Pre y Post. Los desencadenadores previos se activan antes de una operación mientras post desencadena después de una operación.
_Librar Es una propiedad generada por el sistema. El identificador de recurso (_rid) es un identificador único que también es jerárquico por la pila de recursos en el modelo de recursos. Se usa internamente para la colocación y el desplazamiento del recurso de desencadenador.
_Ts Es una propiedad generada por el sistema. Especifica la última marca de tiempo actualizada del recurso. El valor es una marca de tiempo.
_propio Es una propiedad generada por el sistema. Es el URI direccionable único para el recurso.
_Etag Se trata de una propiedad generada por el sistema que especifica la etag de recursos necesaria para el control de simultaneidad optimista.

Tareas

Puede hacer lo siguiente con desencadenadores:

Para obtener información sobre cómo funcionan las UDF, incluida la invocación de un desencadenador, consulte Programación de Azure Cosmos DB: Procedimientos almacenados, desencadenadores y UDF.

Consulte también