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.

Vedere anche