时间戳字段可否维护表变动
我有两套数据,需要定时对两边的数据变动做同步,想通过同步后记录时间戳字段的值来实现
请问各位大虾有没有什么风险。或者有更好的同步数据的方法?
三克油歪瑞马气。。
[解决办法]
两套数据的作用是什么?
触发器或者同步操作不行的话
试试考虑从实际的业务流程去解决
某个条件下不再允许修改、删除的操作
同步数据时注意操作就是了。
再不行的话,表设计就需要比较复杂了
将原表改动过的数据单独进入一个表;同步时再去比对备份表进行修改。
[解决办法]
用合并复制即可(merge replication).
[解决办法]
我不太赞成两边的数据互动,应该是一边是主服务器M,其他各点是分店的点(A店,B店,C店等等).
一方面分店点从服务器下载最到最新数据,另一方面把本地最新的数据上传到服务器
表可以根据需要加相关字段以便维护
[解决办法]
看下MSDN的解释,时间戳,数据库内唯一。只要楼主符合这个条件,没什么风险。
是一种自动公开数据库中生成的唯一的二进制数的数据类型。
rowversion 和 timestamp 是数据类型同义词。
rowversion 通常用于对表行进行版本戳记的机制。存储大小为 8 个字节。
rowversion 数据类型是一个增加的数字,并且不保留日期或时间。若要记录日期或时间,请使用 datetime 数据类型
rowversion 数据类型的特点如下所示:
一个表只能有一个 rowversion 列。
每当插入或更新包含 rowversion 列的行时,都将更新 rowversion 列中的值。这使得 rowversion 列不能很好地适合键,尤其是主键。
rowversion 是只读的列,不能进行更新。
rowversion 在数据库中是唯一的。
若要为数据库返回当前 rowversion 值,请使用命令 @@DBTS
当回滚事务或某些验证失败时,不能将 rowversion 计数器重置为旧值。
此操作已被禁止,原因是如果同时发生其他事务,重置计数器会导致发生问题。
若要查找 rowversion 的当前值,您可以使用 @@DBTS 查询它。
在从 SQL Server 到 SQL Server Compact 3.5 的复制过程(或反向复制过程)中,timestamp 列不会从一个数据库复制到另一个数据库。
这有助于确保 timestamp 的唯一性。复制的值会与某些数据行的现有值或将来值发生冲突
[解决办法]