gpt4 book ai didi

sql-server-2016 - SQL Server 2016无法将系统版本控制添加到关系表

转载 作者:行者123 更新时间:2023-12-04 07:13:46 24 4
gpt4 key购买 nike

SQL Server 2016系统版本控制很酷。我正在使用免费的Developer版本。谢谢MS!

我无法弄清楚是否会给我带来多对多关系的版本。我有一个User对象,该对象具有Roles的集合,反之亦然。 Entity Framework 已经生成了UserRoles表,该表保存了UserRoles之间的关系。我可以使用本文http://sqlhints.com/tag/modify-existing-table-as-system-versioned-temporal-table/打开UserRoles表的系统版本控制。

但是,我无法打开UserRoles。我得到一个错误

Setting SYSTEM_VERSIONING to ON failed because table has a FOREIGN KEY with cascading DELETE or UPDATE.



这是否意味着我们无法了解许多关系的版本控制?

例如。

6/1上的
  • -User1具有role1和role2,但
  • 6/4上的
  • -User1的角色更改为role1和role3

  • 因此,如果我想知道6/1上的用户状态,我认为只有通过在 UserRoles上打开系统版本控制才有可能,但这是行不通的。

    这是可行的还是SQL Server 2016不支持的?如果没有,还有其他方法可以实现吗?

    最佳答案

    听起来这是问题所在的是ON UPDATE CASCADE或ON UPDATE DELETE外键。删除级联,并将其替换为知道并处理正确关系的delete proc,您应该会很好。

    就个人而言,我喜欢知道我的删除/更新在做什么,而不是信任关系来处理所有这些关系。我可以看到潜在的锁定问题,并且知道有时候我真的想阻止更新或删除,而不是让它级联通过所有看不见的表。

    关于sql-server-2016 - SQL Server 2016无法将系统版本控制添加到关系表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37734524/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com