由於原始平臺上的位置不同,我的數據庫中的大部分表由複合主鍵組成,身份只在給定的位置唯一。我有一個Period
表格,以FiscalYear
和PeriodID
分隔的本財年的開始日期和結束日期。 PeriodID
被重複1-12所以該表的主鍵是兩個FiscalYear
和PeriodID
創建FK約束時出錯約束:引用表'Period'中沒有與引用列相匹配的主鍵或候選鍵
FiscalYear INT NOT NULL,
PeriodID TINYINT NOT NULL,
PeriodStart DATE NOT NULL,
PeriodEnd DATE NOT NULL,
PeriodWeeks TINYINT NOT NULL,
QuarterID TINYINT NOT NULL,
DateManipulate DATE NOT NULL,
CONSTRAINT [PK_Period] PRIMARY KEY (PeriodID, FiscalYear)
我也有使用相同FiscalYear
和PeriodID
但具有唯一的每個位置數據的Clinic.Dates
表。我有這些分開,所以我沒有40個相同的日期範圍重複的FiscalYear
和PeriodID
的實例。
ClinicID INT NOT NULL CONSTRAINT [FK_ClinicDates] FOREIGN KEY REFERENCES Clinic.Master(ClinicID),
FiscalYear INT NOT NULL,
PeriodID TINYINT NOT NULL,
PeriodDays INT NOT NULL,
CONSTRAINT [PK_Dates] PRIMARY KEY (ClinicID, PeriodID, FiscalYear)
我遇到的問題是創建這些表之間的外鍵約束,因爲列不是唯一的。
ALTER TABLE Clinic.Dates ADD
CONSTRAINT FK_PeriodDates FOREIGN KEY(FiscalYear, PeriodID) REFERENCES Clinic.Period(FiscalYear, PeriodID)
GO
我得到的錯誤是:
There are no primary or candidate keys in the referenced table 'Clinic.Period' that match the referencing column list in the foreign key 'FK_PeriodDates'.
我的問題:有沒有解決這個另一種方式?主鍵存在於Clinic.Period
表中,但在嘗試製作此FK約束時無法識別。
更新:這裏有兩個數據示例爲更好的角度這兩個表。
我不這麼認爲,在'Clinic.Dates'表都將有FiscalYear'的'多個實例和'PeriodID'所以它couldn」不能用於限制條件。無論我給了它一個鏡頭,並收到相同的錯誤:'在引用表'Clinic.Dates'中沒有與外鍵'FK_PeriodDates'中的引用列表匹配的主鍵或候選鍵。 –