There are no primary or candidate keys in the referenced table '%.*ls' that match the referencing column list in the foreign key '%.*ls'.

Error Message:
Msg 1776, Level 16, State 0, Line 1
There are no primary or candidate keys in the referenced table ‘%.*ls’ that match the referencing column list in the foreign key ‘%.*ls’.

Severity level:
16.

Description:
This error message appears when you try to create a FOREIGN KEY constraint for a table that references another table for which no PRIMARY KEY or candidate key exist.

Consequences:
The T-SQL statement can be parsed, but causes the error at runtime.

Resolution:
Error of the Severity Level 16 are generated by the user and can be fixed by the SQL Server user. The statement cannot be executed this way. FOREIGN KEY constraints can only reference tables that do have either a PRIMARY KEY constraint defined or a candidate key exists.

Versions:
All versions of SQL Server.

Example(s):
USE tempdb;
GO
IF OBJECT_ID(‘tempdb..t’) > 0
 DROP TABLE t
GO
CREATE TABLE t
(
 c1 INT
 CONSTRAINT FK_t_t1_c1 FOREIGN KEY REFERENCES t(c1)
)
GO

Remarks:
In the above example we try to create a FOREIGN KEY constraint for the table t that references itself. Because no PRIMARY KEY constraint and no cnadidate key exist or the table t, the error is raised.

]]>

Leave a comment

Your email address will not be published.