Поддерживают ли временные таблицы в SQL Server 2017 внешние ключи? - PullRequest
0 голосов
/ 25 сентября 2018

Если я пытаюсь добавить внешний ключ во временную таблицу в Visual Studio, он не может разрешить ссылку на первичную таблицу для ключа.Это происходит независимо от того, является ли эта таблица временной таблицей или нет временной.

В документах говорится, что в таблице истории не должно быть внешних ключей для временной таблицы ... но они не говорят, что вы можетеих нет в самой временной таблице.

Возможно ли это?

CREATE TABLE [Doc].[Document]
(
    [Id] INT NOT NULL PRIMARY KEY IDENTITY,
    [SysStart] DATETIME2 (7) GENERATED ALWAYS AS ROW START NOT NULL DEFAULT CAST('1900-1-1 00:00:00.0000000' AS datetime2),
    [SysEnd] DATETIME2 (7) GENERATED ALWAYS AS ROW END NOT NULL DEFAULT CAST('9999-12-31 12:59:59.9999999' AS datetime2), 
    [Name] NVARCHAR(250) NOT NULL, 
    [TypeId] INT NOT NULL, 
    [InActive] BIT NOT NULL DEFAULT 0, 
    [UpsertedBy] NVARCHAR(100) NOT NULL, 
    [DateAndTime] DATE NOT NULL DEFAULT getdate(), 

    CONSTRAINT [FK_Document_ToTable] 
        FOREIGN KEY ([TypeId]) **REFERENCES [Type]([Id])**, 

    PERIOD FOR SYSTEM_TIME ([SysStart], [SysEnd])
)
WITH (SYSTEM_VERSIONING = ON(HISTORY_TABLE=[Doc].[Document_HISTORY], DATA_CONSISTENCY_CHECK=ON))

1 Ответ

0 голосов
/ 31 декабря 2018

Да, это вполне возможно.

Ниже отлично работает

CREATE TABLE Foo(FooId INT PRIMARY KEY);


CREATE TABLE Bar
(
    [Id] INT NOT NULL PRIMARY KEY IDENTITY,
    FooId INT REFERENCES Foo, /*Works fine*/
    [SysStart] DATETIME2 (7) GENERATED ALWAYS AS ROW START NOT NULL DEFAULT CAST('1900-1-1 00:00:00.0000000' AS datetime2),
    [SysEnd] DATETIME2 (7) GENERATED ALWAYS AS ROW END NOT NULL DEFAULT CAST('9999-12-31 12:59:59.9999999' AS datetime2), 
    PERIOD FOR SYSTEM_TIME ([SysStart], [SysEnd])
)
WITH (SYSTEM_VERSIONING = ON)
...