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:
- Creación de un desencadenador
- Reemplazar un desencadenador
- Enumerar desencadenadores
- Eliminación de un desencadenador
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.