Триггеры
Azure Cosmos DB — это глобально распределенная база данных с несколькими моделями, которая поддерживает модели данных документов, графов и ключей и значений. Содержимое этого раздела предназначено для управления ресурсами триггеров с помощью API SQL через REST.
Триггеры — это части логики приложения, которые могут выполняться до (предварительные триггеры) и после (после триггеров) создания, удаления и замены документа. Триггеры написаны на языке JavaScript. Триггеры pre и post не принимают никакие параметры. Подобно хранимым процедурам, триггеры содержатся в пределах коллекции, тем самым ограничивая логику приложения до пределов коллекции.
Подобно хранимым процедурам, у ресурса триггеров есть имеет фиксированная схема. В тексте свойства содержится логика приложения. В следующем примере показана конструкция 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"
}
Свойство | Описание |
---|---|
идентификатор | Обязательный. Это настраиваемое пользователем свойство. Это уникальное имя, используемое для идентификации триггера. Длина идентификатора не должна превышать 255 символов. |
body | Обязательный. Это настраиваемое пользователем свойство. Это тело триггера. |
triggerOperation | Обязательный. Это тип операции, которая вызывает триггер. Допустимые значения: All, Insert, Replace и Delete. |
triggerType | Обязательный. Это указывает, когда активируется триггер. Допустимые значения: Pre и Post. Триггеры Pre срабатывают перед операцией, а Post — после операции. |
_rid | Это свойство, созданное системой. Идентификатор ресурса (_rid) — это уникальный идентификатор, который также является иерархическим для стека ресурсов в модели ресурсов. Он используется системой для размещения и перемещения по ресурсам триггера. |
_Ts | Это свойство, созданное системой. Оно представляет метку времени последнего обновления ресурса. Значение — метка времени. |
_Самостоятельно | Это свойство, созданное системой. Это уникальный адресуемый универсальный код ресурса. |
_etag | Это системное свойство, указывающее тег ресурса, необходимый для управления оптимистическим параллелизмом. |
Задания
С помощью триггеров можно выполнить следующие действия:
Сведения о том, как работают определяемые пользователем функции, включая вызов триггера, см. в статье Программирование Azure Cosmos DB: хранимые процедуры, триггеры и определяемые пользователем функции.