2015-09-22 2 views

ответ

3

От here:

Для того, чтобы сделать таблицу системообразующую версионируются таблицу, необходимо в следующее:

  • Первичный ключ
  • таблица вариант SYSTEM_VERSIONING быть установлен ON
  • Два столбца DATETIME2(), не подлежащие обнулению, представляющие начало и конец периода действия строки
    • Стартовый столбец должен быть помечен с помощью опции GENERATED ВСЕГДА КАК ROW СТАРТА
    • Конца колонка должна быть помечена с помощью опции GENERATED ВСЕГДА КАК ROW END
  • Обозначения колонн периода: СРОК ДЛЯ SYSTEM_TIME (,)
  • Связанная История таблицы (которые SQL Server может создать для вас), чтобы держать прошлые состояния измененных строк
2

вы с относятся к этим двум ссылкам:

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 

кредиты по ссылке выше для исходного кода.

+0

спасибо @Japz для рефералов в моем сообщении в блоге. –

+1

@ManojPandey, я нашел, что онлайн и поделился здесь :) идеальное сообщение в блоге для вопроса выше .. приветствую вас и благодарю вас за ваш пост. :) – Japongskie

0

Обращайтесь к образцам в how to create temporal tables in SQL Server в соответствии с каждым сценарием.

Простейшая форма создания новой таблицы SQL в качестве временной таблицы следующим образом

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) 

Это создаст таблицу базы данных с именем sampleTable и соответствующей истории таблицы в текущей базе данных

1

Используя System_versioning = ON будет автоматически присваивать имя системной таблицы, но если вы хотите явно указать свою системную таблицу, как показано ниже

--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 

 Смежные вопросы

  • Нет связанных вопросов^_^