Я пытаюсь моделировать сущности для резюме, и при этом я пришел к следующему вопросу: все, кроме последних удерживаемых позиций, имеют дату окончания.Как представить значение, которое не является нулевым, кроме одной строки?
Есть ли хороший способ ограничить не более одной строки, разрешенной как null. Лучшим событием было бы то, что единственный разрешенный null также имел последнюю дату начала.
Другой способ сказать это, можете ли вы указать ограничение, которое говорит «не равно нулю, если»?
Примечание: это учебное упражнение, которое я выполняю (в отличие от работы над производственным кодом). Вот сценарий таблицы Я работаю с:
CREATE TABLE [dbo].[Employers](
[Id] [uniqueidentifier] NOT NULL,
[City] [nvarchar](max) NULL,
[State] [nvarchar](max) NULL,
[StartMonth] [int] NULL,
[StartYear] [int] NOT NULL,
[EndMonth] [int] NULL,
[EndYear] [int] NULL,
[Name] [nvarchar](max) NULL,
[Label] [nvarchar](max) NULL,
[Resume_Id] [uniqueidentifier] NULL,
[UserProfile_UserId] [int] NULL,
PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[Employers] WITH CHECK ADD CONSTRAINT [Resume_Employers] FOREIGN KEY([Resume_Id])
REFERENCES [dbo].[Resumes] ([Id])
GO
ALTER TABLE [dbo].[Employers] CHECK CONSTRAINT [Resume_Employers]
GO
ALTER TABLE [dbo].[Employers] WITH CHECK ADD CONSTRAINT [UserProfile_Employers] FOREIGN KEY([UserProfile_UserId])
REFERENCES [dbo].[UserProfile] ([UserId])
GO
ALTER TABLE [dbo].[Employers] CHECK CONSTRAINT [UserProfile_Employers]
GO
Что делать, если человек в настоящее время работает для двух работодателей? – allyourcode
это хороший момент, спасибо –