gpt4 book ai didi

sql - 时态表中的计算列

转载 作者:行者123 更新时间:2023-12-04 18:59:45 27 4
gpt4 key购买 nike

我正在考虑创建临时表 https://msdn.microsoft.com/en-us/library/mt604462.aspx在我们的数据库中,但我不能在几个具有计算列的表上。

返回的错误消息是不言自明的

"Computed column is defined with a user-defined function which is not allowed with system-versioned table"

但我希望有一种方法可以排除或忽略被跟踪的列?

我尝试删除创建历史表的计算列,然后将计算列添加回表中,但这不起作用。

感谢任何帮助。

谢谢

编辑-
我无法找到一种方法来忽略被跟踪的列,但我们能够重构使用 UDF 的列,从而使我们能够使用时态表。

最佳答案

我正在努力将计算列添加到现有的系统版本控制表中。如果其他人遇到类似的问题,我终于意识到历史表不会以相同的方式处理列。它最终类似于基表上有一个 IDENTITY 列,但这会导致历史表上有一个常规的 INT 字段。

如果您尝试将计算列添加到系统版本化(临时)表:

  • 首先关闭系统版本控制
  • 然后将计算列添加到基表
  • 验证生成的计算列的“类型”
  • 将具有适当静态类型的列添加到历史记录表
  • 重新启用系统版本控制(不要忘记指定历史记录表)

我发现很奇怪的是,当您重新打开系统版本控制时,您可能会意外地省略历史表。我希望它要么恢复到同一个表的版本控制,要么抛出某种错误,考虑到这可能是有点意外的行为。

@pasquale-ceglie - 我没有足够的声誉来发表评论,但我想扩展你所说的内容。您应该能够将大多数计算列与时态表一起使用,只是更加手动。基本上,您无法复制带有计算列的架构定义,但是您可以在尝试打开所有内容之前复制结果列并生成适当的历史表。两个表之间的定义有点不同(一开始让我很困惑)。我在这里订阅了,如果上面的内容不清楚并且好奇的话请告诉我。

关于sql - 时态表中的计算列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40413759/

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