我正在使用 SQL Express 19,每次尝试创建与表的外键关系时,我都会收到错误消息。 我得到的错误如下
引用表“Dimension.FinanceSummaryAccounts”中没有主键或候选键 匹配外键“FK_FinanceSummaryAccounts_FinanceChartOfAccounts”中的引用列列表。 无法创建约束或索引。查看以前的错误
错误来自 SQL 脚本的最后两行
CONSTRAINT [FK_FinanceSummaryAccounts_FinanceChartOfAccounts] 外键([SummaryAccountID]) 参考文献 [维度].FinanceSummaryAccounts
你能指导我解决这个问题吗?
这是我的sql脚本,另外我附上了表格和错误的图表图像。
-- CREATE SCHEMA [History] AUTHORIZATION [dbo];
-- CREATE SCHEMA [Dimension] AUTHORIZATION [dbo];
-- CREATE SCHEMA [Fact] AUTHORIZATION [dbo];
CREATE TABLE [Dimension].[FinanceSummaryCategories]
(
[SummaryCategoryID] INT NOT NULL CONSTRAINT [PK_SummaryCategoryID] Primary Key IDENTITY,
[SummaryCategorySortID] MONEY NOT NULL DEFAULT 0,
[SummaryCategory] NVARCHAR(75) NOT NULL,
[Note] NVARCHAR(250) NULL,
[ModifiedBy] NVARCHAR(250) NULL,
[ModifiedOn] DATETIME NULL DEFAULT GetDate(),
[CreatedBy] NVARCHAR(250) NULL,
[CreatedOn] DATETIME NULL DEFAULT GetDate(),
)
GO
CREATE TABLE [Dimension].[FinanceSummaryAccounts]
(
[SummaryAccountID] INT NOT NULL IDENTITY(1,1),
-- [SummaryAccountID] INT NOT NULL,
[SummaryCategoryID] INT NOT NULL,
[SummaryAccountSortID] MONEY NOT NULL DEFAULT 0,
[SummaryAccount] NVARCHAR(75) NOT NULL,
[Format] NVARCHAR(500) NOT NULL DEFAULT '#,0',
[ModifiedBy] NVARCHAR(250) NULL,
[ModifiedOn] DATETIME NULL DEFAULT GetDate(),
[CreatedBy] NVARCHAR(250) NULL,
[CreatedOn] DATETIME NULL DEFAULT GetDate()
CONSTRAINT [PK_SummaryAccountID] PRIMARY KEY NONCLUSTERED
(
[SummaryAccountID] ASC,
[SummaryCategoryID] ASC
)
,
CONSTRAINT [FK_FinanceSummaryCategories_FinanceSummaryAccounts] FOREIGN KEY([SummaryCategoryID])
REFERENCES [Dimension].[FinanceSummaryCategories]([SummaryCategoryID])
)
GO
CREATE TABLE [Dimension].[FinanceCOASources]
(
[COASourceID] INT NOT NULL IDENTITY(1,1),
[COASourceSortID] MONEY NOT NULL DEFAULT 0,
[COASource] NVARCHAR(100) NOT NULL,
[ModifiedBy] NVARCHAR(250) NULL,
[ModifiedOn] DATETIME NULL DEFAULT GetDate(),
[CreatedBy] NVARCHAR(250) NULL,
[CreatedOn] DATETIME NULL DEFAULT GetDate(),
CONSTRAINT [PK_FinanceCOASources] PRIMARY KEY CLUSTERED
(
[COASourceID] ASC
)
)
GO
CREATE TABLE [Dimension].[FinanceChartOfAccounts]
(
[AccountID] INT NOT NULL,
[COASourceID] INT NOT NULL,
[AccountSortID] MONEY NOT NULL,
[AccountDescription] NVARCHAR(250) NOT NULL,
[SummaryAccountID] INT NOT NULL,
[Active] BIT NOT NULL DEFAULT 1,
[Header01] INT NOT NULL,
[Header02] INT NOT NULL,
[Header03] INT NOT NULL,
[Header04] INT NOT NULL,
[Header05] INT NOT NULL,
[ActualOperator] NVARCHAR(50) NOT NULL DEFAULT '*',
[ActualNumber] MONEY NOT NULL DEFAULT 1,
[BudgetOperator] NVARCHAR(50) NOT NULL DEFAULT '*',
[BudgetNumber] MONEY NOT NULL DEFAULT 1,
[ForecastOperator] NVARCHAR(50) NOT NULL DEFAULT '*',
[ForecastNumber] MONEY NOT NULL DEFAULT 1,
[ModifiedBy] NVARCHAR(250) NULL,
[ModifiedOn] DATETIME NULL DEFAULT GetDate(),
[CreatedBy] NVARCHAR(250) NULL,
[CreatedOn] DATETIME NULL DEFAULT GetDate(),
CONSTRAINT [PK_FinanceChartOfAccounts] PRIMARY KEY CLUSTERED
(
[AccountID] ASC,
[SummaryAccountID] ASC,
[COASourceID] ASC
)
,
CONSTRAINT [FK_FinanceCOASources_FinanceChartOfAccounts] FOREIGN KEY([COASourceID])
REFERENCES [Dimension].[FinanceCOASources]([COASourceID])
,
CONSTRAINT [FK_FinanceSummaryAccounts_FinanceChartOfAccounts] FOREIGN KEY([SummaryAccountID])
REFERENCES [Dimension].[FinanceSummaryAccounts]([SummaryAccountID])
)
GO
谢谢
错误似乎很清楚:just
FinanceSummaryAccounts(SummaryAccountID)
上没有主键,因此您不能创建仅指向该列的外键。