Share via


Triggerek

Az Azure Cosmos DB egy globálisan elosztott többmodelles adatbázis, amely támogatja a dokumentum-, gráf- és kulcsértékű adatmodelleket. Ebben a szakaszban az eseményindító erőforrások REST-en keresztüli SQL API-val történő kezelésére vonatkozó tartalom található.

Az eseményindítók olyan alkalmazáslogikák, amelyek a dokumentum létrehozása, törlése és cseréje előtt (előindítók) és után (az eseményindítók utáni) végrehajthatók. Az eseményindítók JavaScriptben vannak megírva. A pre és a post eseményindítók sem vesznek fel paramétereket. A tárolt eljárásokhoz hasonlóan az eseményindítók is a gyűjtemény korlátain belül élnek, így az alkalmazáslogikát a gyűjteményre bízták.

A tárolt eljárásokhoz hasonlóan az eseményindítók erőforrása rögzített sémával rendelkezik. A törzstulajdonság tartalmazza az alkalmazáslogikát. Az alábbi példa egy eseményindító JSON-szerkezetét szemlélteti.

{  
"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"  
}  
  
Tulajdonság Leírás
id Kötelező. Ez egy felhasználó által beállított tábla tulajdonság. Ez az eseményindító azonosításához használt egyedi név. Az azonosító nem haladhatja meg a 255 karaktert.
Szervezet Kötelező. Ez egy felhasználó által beállított tábla tulajdonság. Ez a trigger törzse.
triggerOperation Kötelező. Ez az eseményindítót meghívó művelet típusa. Az elfogadható értékek a következők: Mind, Beszúrás, Csere és Törlés.
triggerType Kötelező. Ez határozza meg, hogy mikor aktiválódik az eseményindító. Az elfogadható értékek a következők: Pre és Post. A Pre aktiválja a tüzet egy művelet előtt, míg a Post egy művelet után aktiválódik.
_Megszabadulni Ez egy rendszer által létrehozott tulajdonság. Az erőforrás-azonosító (_rid) egy egyedi azonosító, amely az erőforrás-modell erőforrás-verménként is hierarchikus. Belsőleg használják az eseményindító-erőforrás elhelyezésére és navigációjára.
_Ts Ez egy rendszer által létrehozott tulajdonság. Meghatározza az erőforrás utolsó frissített időbélyegét. Az érték egy időbélyeg.
_Önálló Ez egy rendszer által létrehozott tulajdonság. Ez az erőforrás egyedileg címezhető URI-ja.
_Etag Ez egy rendszer által létrehozott tulajdonság, amely meghatározza az optimista egyidejűség-vezérléshez szükséges erőforrás-etaget.

Feladatok

Az eseményindítókkal a következőket teheti:

Az UDF-ek működéséről, beleértve az eseményindítók meghívását is, olvassa el az Azure Cosmos DB programozása: Tárolt eljárások, eseményindítók és UDF-ek című témakört.

Lásd még: