【发布时间】:2019-03-01 06:38:02
【问题描述】:
如果我尝试在 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))
【问题讨论】:
-
SSDT 在临时表方面仍然非常不稳定 - 我经常不得不关闭 VS 并删除 SSDT 的临时文件(
*.jfm、*.dbmdl和sqlproj.user,以及 nuking它的bin和obj文件),否则它会抱怨缺少或不匹配的历史记录表 - 我怀疑这是你的实际问题。
标签: sql-server temporal-tables