我還沒有真的在我的數據庫中使用過外鍵,我總是隻寫代碼來強制執行我的操作,但我正在尋求將某些邏輯轉移到數據庫並學習更多關於外鍵的知識。在同一張表上的SQL中的關係
我現在有它具有表Categories
數據庫:
CREATE TABLE [dbo].[Categories](
[CategoryID] [bigint] IDENTITY(1,1) NOT NULL,
[ParentCategoryID] [bigint] NOT NULL,
[CategoryStatus] [bit] NOT NULL,
[CategoryTitle] [varchar](64) NOT NULL,
[CategorySlug] [varchar](64) NOT NULL,
[CategoryThumbnail] [varchar](128) NULL,
[CategoryHeaderImage] [varchar](128) NULL,
[CategoryDescription] [text] NULL,
CONSTRAINT [PK_Categories] PRIMARY KEY CLUSTERED
(
[CategoryID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [UI_Categories_Slug] UNIQUE NONCLUSTERED
(
[CategorySlug] 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]
我想創建涉及ParentCategoryID
備份到CategoryID
的外鍵。在創建FK時,它將成爲主列,並且在這種情況下哪個是外國列?
'我從來沒有真的在我的數據庫中使用外鍵' - 哇,+1的勇敢的聲明!現在快速做一些事情。 – OzrenTkalcecKrznaric
@Ozren在一些商店中禁止使用外鍵,因爲它們「減慢了速度」。 –
@AaronBertrand:在這個頁面上有兩個非常有趣的陳述,我覺得他們很難相信;你的真實故事和FK放慢了速度:D – OzrenTkalcecKrznaric