我有一个条件,我应该更新宇宙数据库内的状态,但我有一个宇宙数据库容器触发器。这意味着,如果我更新/插入状态,触发器将被触发(因为容器将改变),它将导致无限循环。请问有什么办法可以解决这个问题吗?
cbeh67ev1#
如果您是指cosmos db中的预触发器或后触发器,则不会导致无限循环。因为它们需要用代码调用,如下所示: RequestOptions requestOptions = new RequestOptions(); requestOptions.setPostTriggerInclude(Arrays.asList("trgPostUpdateMetadata")); asyncClient.createDocument(containerLink, item, requestOptions, false).toBlocking(); 如果更新/插入作业状态 requestOptions.setPostTriggerInclude(Arrays.asList("trgPostUpdateMetadata")); ,将不会调用触发器。如果你是指azure函数中的azure cosmos db,只需禁用它,然后更新/插入作业状态。
RequestOptions requestOptions = new RequestOptions(); requestOptions.setPostTriggerInclude(Arrays.asList("trgPostUpdateMetadata")); asyncClient.createDocument(containerLink, item, requestOptions, false).toBlocking();
requestOptions.setPostTriggerInclude(Arrays.asList("trgPostUpdateMetadata"));
7fyelxc52#
如果你指的是azure函数的cosmos db触发器,则不是,目前无法区分插入和更新事件。如果您有一个createdtime属性,您可以检查它是否与文档时间戳(属性)匹配,但不能说明事件的原始操作,这是可能的。
2条答案
按热度按时间cbeh67ev1#
如果您是指cosmos db中的预触发器或后触发器,则不会导致无限循环。因为它们需要用代码调用,如下所示:
RequestOptions requestOptions = new RequestOptions(); requestOptions.setPostTriggerInclude(Arrays.asList("trgPostUpdateMetadata")); asyncClient.createDocument(containerLink, item, requestOptions, false).toBlocking();
如果更新/插入作业状态requestOptions.setPostTriggerInclude(Arrays.asList("trgPostUpdateMetadata"));
,将不会调用触发器。如果你是指azure函数中的azure cosmos db,只需禁用它,然后更新/插入作业状态。
7fyelxc52#
如果你指的是azure函数的cosmos db触发器,则不是,目前无法区分插入和更新事件。
如果您有一个createdtime属性,您可以检查它是否与文档时间戳(属性)匹配,但不能说明事件的原始操作,这是可能的。