mssql

推荐列表 站点导航

当前位置:首页 > 数据库 > mssql >

放假之前老大跟我提起了一下2016有个有趣的功能叫 Temporal Table

来源:网络  作者:网友投稿  发布时间:2021-01-19 16:35
放假之前老大跟我提起了一下2016有个有趣的成果叫TemporalTable,本日去看了一下资料整理一下。这个成果看上去像是临...

放假之前老大跟我提起了一下2016有个有趣的成果叫 Temporal Table ,然后再别离drop 掉当前表和汗青表 4 我是充数的╮(╯_╰)╭ ~请其他大神指导增补 5 感谢@wy123 的提醒,下面尚有几个测试说明 1 假如利用Merge,它的界面看起来是这样的(就像是T1一样) 建设了之后,因为需要用这2个字段来记录数据的发生轨迹,那么TimeTo就会记录着修改,对付我们海内,将抛堕落误。

删除的时间) 下面我们举办测试,TimeTo)) with (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.T1History)); 这里我就简朴的建设一个只有自增主键和一个列的表,将在汗青表内里写入一条汗青记录。

就是主表删除了行记录,就是小时-8的操纵) Step 2:修改数据 update T1 set Col1 = Col1+New where ID = 2select * from T1select * from T1HistoryIDCOl1TimeFromTimeTo----------- -------------------------------------------------- --------------------------- ---------------------------111112016-10-07 07:28:30.3598532 9999-12-31 23:59:59.999999922222New2016-10-07 07:30:38.0561513 9999-12-31 23:59:59.9999999333332016-10-07 07:28:30.3598532 9999-12-31 23:59:59.9999999IDCOl1TimeFromTimeTo----------- -------------------------------------------------- --------------------------- ---------------------------222222016-10-07 07:28:30.3598532 2016-10-07 07:30:38.0561513 修改数据的时候,TimeTo datetime2 generated always as row end,并不需要手工插入,被删除, Step 3:删除 delete from T1 where ID = 3select * from T1select * from T1HistoryIDCOl1TimeFromTimeTo----------- -------------------------------------------------- --------------------------- ---------------------------111112016-10-07 07:28:30.3598532 9999-12-31 23:59:59.999999922222New2016-10-07 07:30:38.0561513 9999-12-31 23:59:59.9999999IDCOl1TimeFromTimeTo----------- -------------------------------------------------- --------------------------- ---------------------------222222016-10-07 07:28:30.3598532 2016-10-07 07:30:38.0561513333332016-10-07 07:28:30.3598532 2016-10-07 07:32:04.3640717 删除数据的时候和修改的机制差不多。

(2222),确认你的Sql Server 版本是2016,建设System_Versioning 的表,不能直接利用drop table 语句,(3333)select * from T1select * from T1HistoryIDCOl1TimeFromTimeTo----------- -------------------------------------------------- --------------------------- ---------------------------111112016-10-07 07:28:30.3598532 9999-12-31 23:59:59.9999999222222016-10-07 07:28:30.3598532 9999-12-31 23:59:59.9999999333332016-10-07 07:28:30.3598532 9999-12-31 23:59:59.9999999(3 行受影响)IDCOl1TimeFromTimeTo----------- -------------------------------------------------- --------------------------- --------------------------- 新增的时候, 然后我们来试下怎么去玩这个成果,数据都是最新的版本,在主表将保存数据的最新版本,回收的时间将利用UTC名目标时间,系统维护这2个字段,首先,并将TimeTo配置为当前修改的UTC时间,TimeFrom datetime2 generated always as row start,然后再说明 Step 1:新增数据 insert into T1 (Col1)values (1111),TimeFrom 和TimeTo 这2个字段将由系统节制维护,本日去看了一下资料整理一下, 简朴的测试就可以做到这里,可是其实是系统维护的一个汗青记录表,需要先用ALTER TABLE [dbo].[T1] SET ( SYSTEM_VERSIONING = OFF ) 来把系统维护的版本去掉,假如显示写入这个字段,然后我们通过一个这样的语句来建设表 Use Testgocreate table T1(ID int identity primary key,建设这种范例的表需要有主键才行~居然健忘了 , 好比这里我是利用一个TimeFrom 的字段暗示数据的浸染开始时间,那么Merge做的操纵将对应以上的增/删/改来维护版本 2 利用了经版本维护的表之后,period for system_time(TimeFrom,所以在汗青表内里并不存在记录(注明一点,COl1 nvarchar(50),就会在下面有一个T1History的表中表来记录,可是汗青表保存了一份删除的行动。

不能利用truncate table 的操纵, 这个成果看上去像是姑且表,因为操纵不支持 3 drop 表的时候,(在某个水平上面比起我们手动维护的汗青表应该利便了一点的) 简朴直接的说,先做测试样例,而TimeTo暗示这行数据的失效时间(例如说数据被修改,必需有2个声明为datetime2 的时间字段才行,。

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/sql/mssql/12846.shtml

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

放假之前老大跟我提起了一下2016有个有趣的功能叫 Temporal Table

2021-01-19 编辑:网友投稿

放假之前老大跟我提起了一下2016有个有趣的成果叫 Temporal Table ,然后再别离drop 掉当前表和汗青表 4 我是充数的╮(╯_╰)╭ ~请其他大神指导增补 5 感谢@wy123 的提醒,下面尚有几个测试说明 1 假如利用Merge,它的界面看起来是这样的(就像是T1一样) 建设了之后,因为需要用这2个字段来记录数据的发生轨迹,那么TimeTo就会记录着修改,对付我们海内,将抛堕落误。

删除的时间) 下面我们举办测试,TimeTo)) with (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.T1History)); 这里我就简朴的建设一个只有自增主键和一个列的表,将在汗青表内里写入一条汗青记录。

就是主表删除了行记录,就是小时-8的操纵) Step 2:修改数据 update T1 set Col1 = Col1+New where ID = 2select * from T1select * from T1HistoryIDCOl1TimeFromTimeTo----------- -------------------------------------------------- --------------------------- ---------------------------111112016-10-07 07:28:30.3598532 9999-12-31 23:59:59.999999922222New2016-10-07 07:30:38.0561513 9999-12-31 23:59:59.9999999333332016-10-07 07:28:30.3598532 9999-12-31 23:59:59.9999999IDCOl1TimeFromTimeTo----------- -------------------------------------------------- --------------------------- ---------------------------222222016-10-07 07:28:30.3598532 2016-10-07 07:30:38.0561513 修改数据的时候,TimeTo datetime2 generated always as row end,并不需要手工插入,被删除, Step 3:删除 delete from T1 where ID = 3select * from T1select * from T1HistoryIDCOl1TimeFromTimeTo----------- -------------------------------------------------- --------------------------- ---------------------------111112016-10-07 07:28:30.3598532 9999-12-31 23:59:59.999999922222New2016-10-07 07:30:38.0561513 9999-12-31 23:59:59.9999999IDCOl1TimeFromTimeTo----------- -------------------------------------------------- --------------------------- ---------------------------222222016-10-07 07:28:30.3598532 2016-10-07 07:30:38.0561513333332016-10-07 07:28:30.3598532 2016-10-07 07:32:04.3640717 删除数据的时候和修改的机制差不多。

(2222),确认你的Sql Server 版本是2016,建设System_Versioning 的表,不能直接利用drop table 语句,(3333)select * from T1select * from T1HistoryIDCOl1TimeFromTimeTo----------- -------------------------------------------------- --------------------------- ---------------------------111112016-10-07 07:28:30.3598532 9999-12-31 23:59:59.9999999222222016-10-07 07:28:30.3598532 9999-12-31 23:59:59.9999999333332016-10-07 07:28:30.3598532 9999-12-31 23:59:59.9999999(3 行受影响)IDCOl1TimeFromTimeTo----------- -------------------------------------------------- --------------------------- --------------------------- 新增的时候, 然后我们来试下怎么去玩这个成果,数据都是最新的版本,在主表将保存数据的最新版本,回收的时间将利用UTC名目标时间,系统维护这2个字段,首先,并将TimeTo配置为当前修改的UTC时间,TimeFrom datetime2 generated always as row start,然后再说明 Step 1:新增数据 insert into T1 (Col1)values (1111),TimeFrom 和TimeTo 这2个字段将由系统节制维护,本日去看了一下资料整理一下, 简朴的测试就可以做到这里,可是其实是系统维护的一个汗青记录表,需要先用ALTER TABLE [dbo].[T1] SET ( SYSTEM_VERSIONING = OFF ) 来把系统维护的版本去掉,假如显示写入这个字段,然后我们通过一个这样的语句来建设表 Use Testgocreate table T1(ID int identity primary key,建设这种范例的表需要有主键才行~居然健忘了 , 好比这里我是利用一个TimeFrom 的字段暗示数据的浸染开始时间,那么Merge做的操纵将对应以上的增/删/改来维护版本 2 利用了经版本维护的表之后,period for system_time(TimeFrom,所以在汗青表内里并不存在记录(注明一点,COl1 nvarchar(50),就会在下面有一个T1History的表中表来记录,可是汗青表保存了一份删除的行动。

不能利用truncate table 的操纵, 这个成果看上去像是姑且表,因为操纵不支持 3 drop 表的时候,(在某个水平上面比起我们手动维护的汗青表应该利便了一点的) 简朴直接的说,先做测试样例,而TimeTo暗示这行数据的失效时间(例如说数据被修改,必需有2个声明为datetime2 的时间字段才行,。

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/sql/mssql/12846.shtml

相关文章

风云图片

推荐阅读

返回mssql频道首页