트리거

Azure Cosmos DB 는 문서, 그래프 및 키-값 데이터 모델을 지원하는 전역적으로 분산된 다중 모델 데이터베이스입니다. 이 섹션의 내용은 REST를 통해 SQL API를 사용하여 트리거 리소스를 관리하기 위한 것입니다.

트리거는 (사전 트리거) 및 (사후 트리거) 문서 만들기, 삭제 및 바꾸기 전에 실행할 수 있는 애플리케이션 논리의 조각입니다. 트리거는 JavaScript로 작성됩니다. 사전 및 사후 트리거 모두 매개 변수를 사용하지 않습니다. 저장 프로시저와 같이 트리거는 컬렉션 범위 내에 있으므로 응용 프로그램 논리를 컬렉션으로 국한시킵니다.

저장 프로시저와 비슷하게 트리거 리소스에는 고정 스키마가 있습니다. Body 속성에는 응용 프로그램 논리가 포함됩니다. 다음 예제에서는 트리거의 JSON 구문을 보여 줍니다.

{  
"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"  
}  
  
속성 Description
id 필수 요소. 사용자 settable 속성입니다. 트리거를 식별하는 데 사용하는 고유 이름입니다. ID는 255자를 초과하면 안됩니다.
body 필수 요소. 사용자 settable 속성입니다. 트리거의 본문입니다.
triggerOperation 필수 요소. 트리거를 호출하는 작업의 유형입니다. 허용되는 값은 모두, 삽입, 바꾸기삭제입니다.
triggerType 필수 요소. 트리거가 실행되는 시기를 지정합니다. 허용되는 값은 PrePost입니다. Post 가 작업 후 트리거하는 동안 사전 트리거는 작업 전에 발생합니다.
_rid 시스템 생성 속성입니다. 리소스 ID(_rid)는 리소스 모델의 리소스 스택에 따라 계층적인 고유 식별자입니다. 트리거 리소스의 배치와 탐색용으로 내부에서 사용됩니다.
_ts 시스템 생성 속성입니다. 리소스가 마지막으로 업데이트된 시간의 타임스탬프를 지정합니다. 값은 타임스탬프입니다.
_self 시스템 생성 속성입니다. 고유하게 주소를 지정할 수 있는 리소스의 URI입니다.
_etag 낙관적 동시성 제어에 필요한 리소스 etag를 지정하는 시스템 생성 속성입니다.

작업

트리거를 사용하여 다음을 수행할 수 있습니다.

트리거 호출을 포함하여 UDF가 작동하는 방식에 대한 자세한 내용은 Azure Cosmos DB 프로그래밍: 저장 프로시저, 트리거 및 UDF를 참조하세요.

참고 항목