我们有一个PLM系统,用户可以在其中创建/更新对象(即产品,Colorway等...)。该对象最终被存储到sqlserver数据库中。这些表的确有一个针对ModifyTimeStamp的列。用户更新对象时,该字段已更新时间戳。
我们正在将该工具与其他应用程序集成。该其他应用程序需要知道何时有人为我们的PLM系统创建/更新对象。
实现此目标的最佳方法是什么?编写某种可以继续监听的监听器,如果表中有更改,它会通知吗?
另一种方法可能是触发。但是,由于触发器仅在该表的范围内,所以我的代码将如何调用该触发器?
答案 0 :(得分:0)
我认为有很多方法可以解决这个问题。我将尝试描述一些。
在侦听应用程序上创建调度程序。我建议实现一个调度程序,该调度程序将在每个给定间隔运行,以根据修改时间来获取最新数据并进行处理。
在侦听应用程序上创建一个新的API,并通过创建/更新应用程序对其进行调用。
使用微服务架构,例如在应用程序之间使用消息传递服务来通知一个或另一个创建/更新事件。
希望它对您有帮助,祝您好运!
答案 1 :(得分:0)
SQL Server具有称为“ Change Tracking”的功能。必须首先为数据库激活它。如果已激活,则可以发出特殊查询,以返回有关特定表中数据更改的信息。
根据docs中的示例,查询
DECLARE @last_sync_version bigint;
SET @last_sync_version = <value obtained from query>;
SELECT [Emp ID], SSN,
SYS_CHANGE_VERSION, SYS_CHANGE_OPERATION,
SYS_CHANGE_COLUMNS, SYS_CHANGE_CONTEXT
FROM CHANGETABLE (CHANGES Employees, @last_sync_version) AS C;
将返回自Employees
以来@last_sync_version
表中的数据更改。