请问两个系统数据库之间想要做同步系统,如何有更新ID或是token可以判断?-灵析社区

CO_co

请问两个系统数据库之间想要做同步系统,如何有更新ID或是token可以判断? 目前需要在每个表格增加一个栏位叫更新ID,每次有更新时会去随机生成一个新的ID 另外还要新增一个栏位叫更新日期,每次更新同时更新此日期 然后判断更新日期>=当日半夜12点 + 更新ID是否不一样 假如True才去做此行数据的同步动作 请问原生sql server 是否有自带的隐藏栏位或是其它方式能做到? 询问过AI 请问两个系统数据库之间想要做同步系统,如何有更新ID或是token可以判断? 目前需要在每个表格增加一个栏位叫更新ID,每次有更新时会去随机生成一个新的ID 另外还要新增一个栏位叫更新日期,每次更新同时更新此日期 然后判断更新日期>=当日半夜12点 + 更新ID是否不一样 假如True才去做此行数据的同步动作 请问原生sql server 是否有自带的隐藏栏位或是其它方式能做到? SQL Server 没有自带的隐藏栏位,但可以透过使用 ROWVERSION 或 TIMESTAMP 栏位来实现类似的功能。 ROWVERSION 是一个自动产生的二进位数据,每当一行资料被更新时,ROWVERSION 的值就会自动更新。您可以在同步时比较源和目标数据库的 ROWVERSION 值,如果不一样就进行同步操作。以下是一个示例: plaintext copy code -- 在表格中新增 ROWVERSION 栏位 ALTER TABLE MyTable ADD RowVersion ROWVERSION -- 比较源和目标数据库的 ROWVERSION 值 SELECT * FROM MyTable WHERE RowVersion > @LastSyncRowVersion TIMESTAMP 是一个类似 ROWVERSION 的栏位,每当一行资料被更新时,TIMESTAMP 的值也会自动更新。您可以在同步时比较源和目标数据库的 TIMESTAMP 值,如果不一样就进行同步操作。以下是一个示例: plaintext copy code -- 在表格中新增 TIMESTAMP 栏位 ALTER TABLE MyTable ADD MyTimestamp TIMESTAMP -- 比较源和目标数据库的 TIMESTAMP 值 SELECT * FROM MyTable WHERE MyTimestamp > @LastSyncTimestamp 请注意,ROWVERSION 和 TIMESTAMP 栏位的值只在资料行更新时才会更新,因此如果只是修改了资料行中的其他栏位,而没有修改 ROWVERSION 或 TIMESTAMP 栏位,那么同步操作就不会被触发。另外,ROWVERSION 和 TIMESTAMP 栏位的值是二进位数据,不是日期或时间,因此不能直接比较大小,需要使用特定的函数进行比较。

阅读量:18

点赞量:0

问AI
这个自定义程度太高了,要不使用触发器函数来是实现,要不使用代码来实现,会比较好调整与扩展