Сообщения об ошибках SQL Server No Matching Keys - PullRequest
0 голосов
/ 12 декабря 2011

Я пытаюсь выполнить скрипт базы данных, который я создал с помощью надстройки Forward Engineer для Microsoft Visio.

Ниже приведены ошибки, которые я получаю, и раздел кода, на который ссылается сообщение об ошибке:

Ошибка 1:

Msg 1776, Level 16, State 0, Line 12
There are no primary or candidate keys in the referenced table 'dbo.Account_BillingAccount' that match the referencing column list in the foreign key 'Account_BillingAccount_InvoiceDetail_FK1'.
Msg 1750, Level 16, State 0, Line 12
Could not create constraint. See previous errors.

Код ссылки 1:

ALTER TABLE [dbo].[InvoiceDetail] WITH CHECK ADD CONSTRAINT [Account_BillingAccount_InvoiceDetail_FK1] FOREIGN KEY (
[BillingAccountNumber]
, [AccountNumber]
)
REFERENCES [dbo].[Account_BillingAccount] (
[BillingAccountNumber]
, [AccountNumber]
)

Ошибка 2:

Msg 1776, Level 16, State 0, Line 2
There are no primary or candidate keys in the referenced table 'dbo.ManagerContract' that match the referencing column list in the foreign key 'ManagerContract_RegionalCoordinators_FK1'.
Msg 1750, Level 16, State 0, Line 2
Could not create constraint. See previous errors.

Ссылка на код 2:

ALTER TABLE [dbo].[RegionalCoordinators] WITH CHECK ADD CONSTRAINT [ManagerContract_RegionalCoordinators_FK1] FOREIGN KEY (
[AssociateID]
, [WritingNumber]
)
REFERENCES [dbo].[ManagerContract] (
[AssociateID]
, [WritingNumber]
)

Какой самый эффективный способ устранения вышеупомянутых ошибок?

1 Ответ

0 голосов
/ 12 декабря 2011

У вас должен быть первичный ключ или уникальный ключ в ссылочных таблицах, который соответствует списку столбцов.Так что в ManagerContract вам нужен уникальный ключ для AssociateID, WritingNumber, а в Account_BillingAccount он нужен для BillingAccountNumber, AccountNumber

Узнайте, как создавать уникальные ограничения.http://msdn.microsoft.com/en-us/library/ms191166.aspx

ALTER TABLE [dbo]. [TableName] ADD CONSTRAINT UNQ_ TableName _ColumnName UNIQUE ([ColumnName])

Примерно такв вашем случае.

alter table dbo.ManagerContract 
 add constraint UNQ_ManagerContract_AssociateID_WritingNumber 
 unique (AssociateID, WritingNumber)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...