问题标签 [temporal-tables]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
7456 浏览

oracle - Oracle 中的时态表

Tom Kyte在这里描述了时态表:

时态表是可以返回某个时间点存在的答案的表——您可以要求该表返回昨晚午夜存在的答案,而不是现在存在的答案

Oracle中是否存在这样的表?我找不到他们的文档。如何创建并使用它?他说它们存在于数据库中,尽管他没有说它们存在于 Oracle 或任何其他产品中。这是一个没有实现的概念吗?

0 投票
4 回答
837 浏览

sql-server-2016 - 2016 年的 SQL Server 时态表

当我想在 SQL Server 2016 中创建新的临时表时,我想知道如何创建系统版本表?

0 投票
2 回答
5202 浏览

sql-server - Why we require temporal table in SQL Server 2016 as we have CDC or CT?

What advantages do Temporal Tables have over Change Data Capture or Change Tracking in SQL Server?

0 投票
3 回答
1777 浏览

sql - 如何通过保留数据将存在表更改为 SQL 临时表?

我有很多数据表,我想将其转换为 Microsoft 临时表,但是当我想转换临时表时会导致我的数据丢失。我的代码是:

如何通过保留数据将存在表更改为 Sql 时态表?

0 投票
1 回答
1757 浏览

tsql - 带有时态表的计算列

我的理解是,不可能设置一个时态表,其中基表具有基于 UDF 的计算列。但是,我看到它建议如果您遵循特定过程,这应该是可能的: Azure SQL Server 2016 临时表中的计算列

建议的步骤是

  • 首先关闭系统版本控制
  • 然后将您的计算列添加到基表中
  • 验证结果计算列的“类型”
  • 将具有适当静态类型的列添加到历史记录表
  • 重新打开系统版本控制

此解决方案可能仅适用于 Azure。我已经使用 SQL Standard 进行了尝试,使用的表具有日期时间类型的 UDF 计算列,但没有成功。有没有人能够让它工作,如果可以,请分享一个简单的 TSQL 示例。

肿瘤坏死因子

0 投票
5 回答
3888 浏览

c# - Entity Framework Core 和 SQL Server 2016 时态表

我们将 EF Core 和 SQL Server 2016 用于我们的 .NET Core Web API。我正在评估临时表的使用及其对 EF Core 代码的影响。当我使用 cmdline 生成 EF 模型时,它会生成带有 appstart、append 和映射的模型dbcontext。当我插入/更新时,他们说这些列无法更新。我必须从模型和dbcontext映射中删除 appstart、end 才能使其工作。我读到像 EF 6.x 这样的 EF Core 中还没有拦截功能。

请为此提供任何更好的解决方案。

0 投票
2 回答
9137 浏览

sql-server - How to Stopping System-Versioning on a System-Versioned Temporal Table in SQL Server 2016?

I have a table that has system versioning (temporal table), but I can not see a design environment visually. I do it because I can see the SYSTEM_VERSIONING clause has been used. I would like to have temporarily Stop and then enable it. Who can advise me?

0 投票
1 回答
557 浏览

sql-server - 右键查询时态表不工作

我的 SQL Server Management Studio 2016 加载了 Microsoft 的测试数据库(WideWorldImporters),但由于某种原因,任何作为临时表的表都不允许我右键单击并选择最后 1000 行,因为所有其他非临时表都允许.

我是否遗漏了需要安装的东西,或者是否有其他方法可以查询表中的数据?

0 投票
7 回答
9180 浏览

sql - 如何使用 SQL Server 时态表识别更改的值?

我有一个 SQL Azure 表,并且我打开了新的临时表功能(SQL Server 2016 和 SQL Azure v12 的新功能)。此功能创建另一个表来跟踪对主表的所有更改(我在问题的底部包含了指向有关时态表的文档的链接)。您可以使用特殊查询语言来获取此历史记录。请注意以下查询中的FOR SYSTEM_TIME ALL :

结果集如下所示:

使用SYSTEM_TIME FOR ALL时态表从主表返回当前记录,这是第一个,其余记录是存储在跟踪表中的该记录的先前版本。(可以看到validFrom和ValidTo列,很明显时间记录就是当前记录)这种情况下,保存历史记录的跟踪表叫做KrisisShifts_ShiftTrade_History

我想要的是:

我想构建一个查询,仅突出显示在每个历史点所做的更改。请注意,第二条记录具有不同的StatusID,而第三条记录具有不同的TradeDate

我想产生一个如下所示的结果集(我想我会忽略第一个或当前记录,因为它显然没有被更改):

期望的结果

我不知道如何做到这一点。或者我对另一种解决方案持开放态度。我希望能够快速查看每条记录与原始记录相比的更改。

我试图取消透视结果以比较它们,但我无法让它工作,因为每一行的班次 ID 都是相同的。我很想在这里展示更多的作品,但我真的被困住了。

编辑1:

我已经能够使用 lag() 隔离以下查询中仅一列的更改。我可以将这个查询与我想要跟踪的每一列的类似查询联合起来,但是,这是很多工作并且必须为每个表构建。有没有办法动态地执行此操作,以便自动检测列?

StatusID 更改历史查询:(我将记录隔离为 27 的 shiftId 仅用于测试)

查询结果:

结束编辑 1:

问题:

有人可以帮我从时态表结果集中的每个 shiftId 的先前记录中隔离列中更改的数据吗?

提前致谢

编辑#2:

以下是我想从此表中“监视更改”的所有列的列表:

[TradeDate] [StatusID] [LastActionDate] [AllowedRankID] [OwnerUserID] [OwnerEmail] [OwnerLocationID] [OwnerRankID] [OwnerEmployeeID] [WorkerUserID] [WorkerEmail] [WorkerLocationID] [WorkerRankID] [WorkerPlatoonID] [WorkerEmployeeID] [IsPartialShift] [Detail ] [LastModifiedByUserID] [存档] [更新日期]

结束编辑 2:

新标签注意事项:

我为临时表创建了一个新标签,因为没有。如果有更多声誉的人想要将其添加到标签的详细信息中,以下有它们的描述。

时态表上的 MS Docs

0 投票
1 回答
546 浏览

sql-server - Entity Framework 6 不适用于时态表

我已经更改了现有表以使其成为临时表,然后我从数据库中更新了模型。我遇到了这些错误,我在表中添加了两个新列:

错误 3004:从第 1388 行开始映射片段时出现问题:没有为 Set TbCities 中的属性 TbCities.SysStartTime、TbCities.SysEndTime 指定映射。在以下情况下,具有密钥 (PK) 的实体将不会往返:实体类型为 [DiERPModel.TbCities] 1389 15 DiERP

这是我更改表的查询: