我在 SQL 2012 中使用合并复制。
为什么不能将默认约束标记为 NOT FOR REPLICATION?您可以禁用合并文章的所有默认约束,但它要么全有要么全无,因此它似乎无法提供足够的控制。
这个场景怎么样,
- 用户在客户端插入一条记录 'Shape'
- 'Shape' 有一个默认约束,将 NumberOfSides 字段设置为 4
- 客户端用户编辑 NumberOfSides 的值并将其设置为 5
- 他们与服务器同步
当他们与服务器同步时,它不会重复默认约束并将“NumberOfSides”的值设置回 4 吗?
我在这里错过了什么吗?
我不想禁用复制到客户端的默认约束,因为需要设置有效的默认值。客户端用户需要设置这些值才能使用该软件。
更新:
关于默认约束只应用一次的解释是有道理的。
所以我唯一剩下的问题是,如果我有使用序列的默认约束,我会遇到麻烦,因为序列无法复制。这是我仅有的两个选择吗?
- 关闭特定表的所有默认约束(如果其中一些不适用于序列则不理想)
- 在客户端手动创建序列,然后创建自定义处理程序以在同步时在服务器端应用正确的序列值
当使用 SQL 复制将数据从一台服务器复制到另一台服务器时,插入到行中的所有值都会一起发送。默认约束仅在未为列指定值时适用。如果用户指定值 5,则 5 将被复制并插入到表中。