У меня есть две довольно простые таблицы.
-- Create a new table called '[Events]' in schema '[dbo]'
-- Drop the table if it already exists
DROP TABLE IF EXISTS [dbo].[Events]
GO
-- Create the table in the specified schema
CREATE TABLE [dbo].[Events]
(
[Id] INT NOT NULL PRIMARY KEY IDENTITY, -- Primary Key column
[ImportTypeId] INT NULL
REFERENCES [dbo].[ImportTypes](Id),
[ImportId] NVARCHAR(50) NULL,
[Title] NVARCHAR(512) NOT NULL,
[Description] NVARCHAR(2048) NOT NULL,
CONSTRAINT UQ_Events UNIQUE (ImportId, ImportTypeId),
INDEX IX_EventTitle ([Title] ASC)
);
GO
-- Create a new table called '[Events]' in schema '[eventful]'
-- Drop the table if it already exists
DROP TABLE IF EXISTS [eventful].[Events]
GO
-- Create the table in the specified schema
CREATE TABLE [eventful].[Events]
(
[EventfulId] NVARCHAR(50) NOT NULL
REFERENCES [dbo].[Events](ImportId),
[ImportDate] DATETIME NOT NULL DEFAULT(GETUTCDATE()),
[LastImportDate] DATETIME NULL,
[Url] NVARCHAR(2048) NULL,
CONSTRAINT PK_EventfulEvents PRIMARY KEY CLUSTERED (EventfulId)
);
GO
Однако это ограничение внешнего ключа вызывает проблемы:
REFERENCES [dbo].[Events](ImportId)
При выполнении скрипта я получаю сообщение об ошибке:
В ссылочной таблице «dbo.Events» нет первичных или потенциальных ключей, соответствующих списку столбцов ссылок во внешнем ключе «FK__Events__Eventful__5B78929E».
Как мне ссылаться только на ImportId
в этой таблице? Нужно ли иметь ImportTypeId
в таблице [eventful].[Events]
, чтобы это работало?