Trigger
Azure Cosmos DB è un database multimodello distribuito a livello globale che supporta i modelli di dati document, graph e key-value. Il contenuto di questa sezione riguarda la gestione delle risorse trigger tramite l'API SQL tramite REST.
I trigger sono parti della logica dell'applicazione che possono essere eseguite prima (pre-trigger) e dopo (post-trigger) di creazione, eliminazione e sostituzione di un documento. I trigger sono scritti in JavaScript. Nessuna delle due tipologie (pre-trigger e post-trigger) accetta parametri. Analogamente alle stored procedure, i trigger esistono nei confini di una raccolta, limitando pertanto la logica dell'applicazione alla raccolta stessa.
Analogamente alle stored procedure, la risorsa trigger ha uno schema fisso. La proprietà body contiene la logica dell'applicazione. Il seguente esempio mostra il costrutto JSON di un trigger.
{
"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"
}
Proprietà | Descrizione |
---|---|
id | Obbligatorio. Si tratta di una proprietà impostabile dall'utente. È il nome univoco usato per identificare il trigger. L'ID non deve superare i 255 caratteri. |
body | Obbligatorio. Si tratta di una proprietà impostabile dall'utente. È il corpo del trigger. |
triggerOperation | Obbligatorio. È il tipo di operazione che richiama il trigger. I valori accettabili sono : All, Insert, Replace e Delete. |
triggerType | Obbligatorio. Specifica quando viene attivato il trigger. I valori accettabili sono: Pre e Post. I pre-trigger vengono attivati prima di un'operazione mentre Post attiva dopo un'operazione. |
_rid | Si tratta di una proprietà generata dal sistema. L'ID risorsa (_rid) è un identificatore univoco gerarchico anche per ogni stack di risorse nel modello di risorse. Viene usato internamente per il posizionamento e l'esplorazione della risorsa trigger. |
_Ts | Si tratta di una proprietà generata dal sistema. Indica il timestamp dell'ultimo aggiornamento della risorsa. Il valore è un timestamp. |
_stesso | Si tratta di una proprietà generata dal sistema. È l'URI indirizzabile univoco per la risorsa. |
_Etag | Si tratta di una proprietà generata dal sistema che specifica l'etag della risorsa necessaria per il controllo della concorrenza ottimistica. |
Attività
È possibile eseguire le operazioni seguenti con i trigger:
Per informazioni sul funzionamento delle funzioni definite dall'utente, inclusa la chiamata di un trigger, vedere Programmazione di Azure Cosmos DB: stored procedure, trigger e funzioni definite dall'utente.