【发布时间】:2016-10-10 14:41:20
【问题描述】:
SQL Server 2016 系统版本控制很酷。我正在使用免费的开发者版本。谢谢女士!
我无法弄清楚它是否会给我多对多关系的版本控制。我有一个包含角色集合的用户对象,反之亦然。 Entity Framework 已生成 UserRoles 表,其中包含 User 和 Roles 之间的关系。我能够使用这篇文章http://sqlhints.com/tag/modify-existing-table-as-system-versioned-temporal-table/ 为User 和Roles 表打开系统版本控制。
但是,我无法打开UserRoles。我收到一个错误
将 SYSTEM_VERSIONING 设置为 ON 失败,因为表有一个 FOREIGN KEY 和级联 DELETE 或 UPDATE。
这是否意味着我们无法知道多对多关系的版本控制?
例如。
- 6 月 1 日 - 用户 1 有角色 1 和角色 2,但是
- 6 月 4 日 - 用户 1 的角色更改为角色 1 和角色 3
所以,如果我想知道用户在 6 月 1 日的状态,我认为只有在 UserRoles 上打开系统版本控制才能实现,但这不起作用。
SQL Server 2016 是否支持此操作?如果没有,还有其他方法可以实现吗?
【问题讨论】:
-
听起来问题出在 ON UPDATE CASCADE 或 ON UPDATE DELETE 外键上。删除级联并将其替换为知道并处理正确关系的删除过程,您应该没问题。
-
这就是我们最终所做的。非常感谢!想知道如何将其标记为答案。
-
我会把它放到“答案”部分,这样它就可以显示为已回答。 :)
标签: sql-server-2016