问题标签 [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 投票
0 回答
44 浏览

sql-server-2014 - 适用于 SQL Server 2014 或更早版本的时态表功能

是否可以创建临时表类型的功能来保留 SQL Server 2014 或更早版本中频繁更改的记录的历史记录。我需要跟踪表中的历史变化(例如,在给定零件编号和收到日期的情况下,零件 X 在库存表中 Z 期间的 Y 天缺货)

0 投票
2 回答
311 浏览

sql - 在 Oracle SQL 中为带有句点(临时有效性)的表创建主键

我对带有句点的 Oracle 表的主键有疑问。

我创建了两个表,如下所示:

该脚本成功通过。但是我在插入数据时遇到问题:

我在父表中执行了以下两个插入语句:

第一个:声明

结果:

插入 1 行。

第二:声明

结果

ORA-00001: 违反了唯一约束 (PBSVW.EL_TEMPORAL_TRY_PK)

我知道这是因为“ID”列。但是,我的问题是因为这两行是不同时期的,应该允许吗?

我打算将这段时间用于捕获记录的更改历史记录的功能,以替代闪回。但是,这是否意味着在这种情况下我不应该使用主键?

提前致谢!

0 投票
0 回答
77 浏览

sql - SYSTEM_VERSIONING 是否单独提供旧的数据快照?

我是临时表的新手。我们在数据库中有下表,我们希望通过它及时跟踪客户的 CLV 值。这是表的 CREATE 脚本:

使用预定MERGE报表,我们将每周或每月更新此表。但是,我们不想查看单个记录,而是想知道表格在每个记录之前和之后的样子MERGE。换句话说,时间点分析或快照。

当我查看 Microsoft自己的时间旅行文档时,该脚本似乎包含其他参数,例如MEMORY_OPTIMIZEDDATA_CONSISTENCY_CHECK。我想知道是否可以在没有这些参数的情况下查看旧快照。表的当前结构是否足以及时回溯?

0 投票
2 回答
231 浏览

postgresql - 如何从事务块中的 INSERT 语句返回值?

我的目标是返回transaction_start价值。尝试了 RETURNING 关键字。

但在交易中它不起作用。结果没有错误。结果只是不包含任何数据。

还有其他方法可以实现这个目标吗?

更新

table_for_tests架构:

transaction在执行 INSERT、UPDATE 或 DELETE 操作时,触发器(posgresql temporal_tables扩展)会自动填充列。

触发器是由以下代码创建的:

更新 2

的源代码trigger function (versioning),来自 pgAdmin III:

0 投票
0 回答
171 浏览

date - 时态表上的 powerbi 单日期过滤器(生效日期从和到)

我有一个表格,其中包含带有 date_from 和 date_to 字段的数据更改历史记录。

我还有一个日期表(每个日期的记录)。

例子

in a power bi report i want to see the records at a point in time, so i want a single date filter and when a date is selected it does a between date_from and date_to on the emp table

两个表之间没有关系。我已经通过创建第三个表来解决如何做到这一点,将数据取消透视到 {emp_num,date} 的 2 列表中,从而连接这两个表,这很有效,但是当你有 100k 时,数据大小是两个大的emp 表等,我相信有更好的方法。

当这些没有关系时,有没有办法可以使用日期切片器中的日期过滤 power bi 中的 emp 表。我在表格上尝试了一个可视化过滤器,但您只能在这些表格中硬编码日期而不引用表格。(无论如何我都能看到)

谢谢

0 投票
1 回答
101 浏览

postgresql - 在 PostgreSQL for Windows 中安装 temporal_tables 和 cyanaudit 扩展

我有一个审计和渐变维度 (SCD) 用例,需要安装 PostgreSQL temporal_tablescyanaudit扩展。

但是我的 PostgreSQL 服务器是在 Windows 上的,在搜索了高和低之后,我仍然没有找到在 PostgreSQL for Windows 中安装这些扩展的方法。

有没有人成功地在 Windows 环境中安装这些扩展,你能分享你的方法吗?

太感谢了,

丹尼尔

0 投票
2 回答
286 浏览

sql-server - rowversion 是用于捕获表数据更改的事务一致值吗

如果 ETL 进程尝试通过将列定义的行包含rowversionrowversion“增量窗口”内来检测 SQL Server 中系统版本表上的数据更改,例如:

@previous_etl_cycle_rowversion..和的值@current_etl_cycle_rowversion是从一个日志表中选择的,该表的最新值rowversion在每个 ETL 周期开始时通过以下方式附加到所述日志表中:

...是否有可能由于的行为相对于事务一致性而错过/跳过rowversion落入给定“增量窗口”(由 2 个@@DBTS值限制)内的记录?rowversion- 即,是否有可能rowversion反映在“最终”一致性的基础上?

我正在考虑这样一种情况,即在单个事务中更新了 1000 条记录,并且以某种方式@@DBTS“提前”了记录的提交rowversion,但该记录的特定版本尚不可读......

(为了确定问题的范围,请排除在如此大的批量事务中删除记录或立即连续更新给定记录的任何情况。)

0 投票
1 回答
179 浏览

c# - 使用 Linq2Sql 的临时表

我有一个通用存储库,可以通过 ID 获取实体或获取所有实体:

在为实体关系配置了 DbContext 之后,导航属性以及所有其他属性正在为所有实体正确加载。

现在我被要求使用临时 SQL 表,以便所有实体都有一个有效范围。

使用 SQL,我将包含FOR SYSTEM_TIME AS OF @validityDate在查询中。

调整现有实现以尊重的最简单方法(如果有的话)是什么@validityDate

我试过的:

  1. 寻找一种在执行 SQL 查询时配置所需系统时间的方法。问题:我找不到方法。
  2. @validityDate通过允许作为参数传递的表值函数公开查询。问题:我无法使用 Linq2Sql 传递参数(或者至少我没有弄清楚如何)。
  3. 创建一个执行连接的表值函数(而不是让 EF 执行连接),以便可以使用context.FromSqlRaw(<query>). ISSUE: 如何创建 c# 对象树?(由于存在一对多的关系,因此返回了多行)

我发现使用时态表的所有示例都使用FromSqlRaw. 如果可能的话,我想避免它,因为这意味着整个数据库上下文配置变得无用,并且必须包含映射的附加代码。

0 投票
1 回答
135 浏览

sql-server - 在带有临时表的 SQL Server 中批量加载之前删除索引?

我正在使用 SQL Server 2017 并尝试使用时态表,以便跟踪数据的历史更改。我以前从未使用过时态表,但过去我用传统表创建了许多 ETL 流程,并试图了解如何优化将数据加载到最终表中。传统上,当我编写 ETL 时(当我说传统时,我的意思是当我不使用时态表时),为了提高性能,我通常会删除表上的所有索引,然后批量加载我拥有的 1000 万左右的记录最终表,加载完成后,我将索引重新应用于表。

我想知道是否可以使用临时表来执行此操作?在使用临时表加载或更新数据时,为了保留表的历史记录,似乎我需要有一个主键。但是,如果我无法删除索引,那么在批量加载时我似乎会受到性能影响,对吧?如果在使用临时表历史记录时不能删除索引,如何减少加载表的时间?

0 投票
0 回答
1316 浏览

sql-server - 错误:启用历史记录表时“无法继续执行,因为会话处于终止状态”

我们在 SQL Server 2017 上启用了临时数据(表的系统版本控制历史),但是当我们执行如下删除命令时会收到错误消息

无法继续执行,因为会话处于 kill 状态

但是当我们禁用主表和相关表的历史表时,然后执行删除命令它可以完美地工作。

禁用历史命令: