SQL Server - ограничение столбца в таблице первичным ключом ИЛИ пустым в той же таблице - PullRequest
0 голосов
/ 26 ноября 2010

Я пытаюсь понять, как в SQL Server создать таблицу со столбцом, который может быть либо нулевым, либо иметь значение. Если оно имеет значение, его необходимо ограничить существующим первичным ключом в таблице, за исключением строки, в которой хранится значение.

Нужно ли проверять ограничение? Если да, то каково выражение?

Причина в том, что объекты в таблице могут быть потомками других таблиц. В идеале я бы предпочел сделать это без таблицы сопоставления.

Имя первичного ключа - 'id'.

Столбец, который я пытаюсь ограничить, это 'parentId'. parentId МОЖЕТ быть нулевым ИЛИ ссылаться на действительный идентификатор для другой строки в таблице.

1 Ответ

1 голос
/ 26 ноября 2010

Здесь нужно создать отношение внешнего ключа с той же таблицей, например:

CREATE TABLE [dbo].[Category](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [CategoryName] [nvarchar](150) NOT NULL,
    [ParentCategoryID] [int] NULL,
 CONSTRAINT [PK_tblCategory] PRIMARY KEY CLUSTERED 
([ID] ASC))
GO

ALTER TABLE [dbo].[Category] WITH CHECK ADD CONSTRAINT [FK_tblCategory_tblCategory] 
FOREIGN KEY([ParentCategoryID]) REFERENCES [dbo].[Category] ([ID])
GO

ALTER TABLE [dbo].[Category] CHECK CONSTRAINT [FK_tblCategory_tblCategory]
GO
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...