2015-09-22 1 views

Répondre

3

De here:

Afin de rendre une table une table système versionné, il a besoin de la suivante:

  • Une clé primaire
  • L'option tableau SYSTEM_VERSIONING à régler à ON
  • Deux colonnes DATETIME2() non nulles représentant le début et la fin de la période de validité de la ligne
    • La colonne de départ doit être marqué avec l'option GÉNÉRÉ TOUJOURS EN LIGNE DÉBUT
    • La colonne de fin doit être marquée avec l'option GÉNÉRÉ TOUJOURS EN LIGNE FIN
  • Désignation des colonnes d'époque: PÉRIODE DE system_time (,)
  • Une table liée à l'histoire (qui SQL Server peut créer pour vous) de tenir les états passés des lignes modifiées
2

vous c une référence à ces deux liens:

http://sqlmag.com/sql-server/first-look-system-versioned-temporal-tables-part-1-creating-tables-and-modifying-data

http://blogs.msdn.com/b/manub22/archive/2015/06/30/temporal-data-with-system-versioned-tables-in-sql-server-2016.aspx

http://sqlwithmanoj.com/2015/06/15/temporal-data-support-in-sql-server-2016-part-1/

USE [TestManDB] 
    GO 

    CREATE TABLE dbo.Department 
    (
    DepartmentID  int NOT NULL IDENTITY(1,1) PRIMARY KEY CLUSTERED, 
    DepartmentName  varchar(50) NOT NULL, 
    ManagerID   int NULL, 

    ValidFrom   datetime2 GENERATED ALWAYS AS ROW START NOT NULL, 
    ValidTo    datetime2 GENERATED ALWAYS AS ROW END NOT NULL, 

    PERIOD FOR SYSTEM_TIME (
    ValidFrom, 
    ValidTo 
    ) 
    ) 
    WITH (SYSTEM_VERSIONING = ON); -- No History table name given here 
    GO 

crédits au lien ci-dessus pour le code source.

+0

merci @Japz for referri ng mon blog. –

+1

@ManojPandey, j'ai trouvé cela en ligne et partagé ici :) blog parfait pour la question ci-dessus .. vous êtes les bienvenus et merci aussi pour votre poste. :) – Japongskie

0

Veuillez vous référer aux exemples de cas au how to create temporal tables in SQL Server selon chaque scénario.

La forme la plus simple est de créer une nouvelle table SQL comme la table temporelle comme suit

create table sampleTable (
    IdColumn int identity(1,1) not null primary key clustered, 
    Code varchar(5), 
    CurrentValue varchar(100), 
    SysStartTime datetime2 Generated Always as Row Start Not Null, 
    SysEndTime datetime2 Generated Always as Row End Not Null, 
    Period for System_Time (SysStartTime, SysEndTime) 
) 
with (System_Versioning = ON) 

Cela va créer une table de base de données nommée sampletable et sa table d'historique correspondante dans la base de données actuelle

1

En utilisant System_versioning = ON va attribuer automatiquement le nom de la table système, mais si vous voulez explicitement mentionner votre table système comme ci-dessous

--create table or use existing table 
CREATE TABLE [dbo].[table1](
    [id] [int] IDENTITY(1,1) NOT NULL, 
    [name] [varchar](255) NOT NULL, 
    [updated_at] [datetime] NULL 
) 

GO 
--Adding additional field for temporal tables 
alter table dbo.table1 
add start_time DATETIME2 generated always as row start hidden default sysutcdatetime() 
    ,end_time DATETIME2 generated always as row end hidden default sysutcdatetime() 
    ,period for system_time (start_time, end_time) 
go 

--enable system versioning 
alter table dbo.table1 
set (system_versioning = ON (history_table = dbo.table1_history)) 
go