Foreign key '%.*ls' references object '%.*ls' which is not a user table.

Error Message:
Msg 1768, Level 16, State 0, Line 1
Foreign key ‘%.*ls’ references object ‘%.*ls’ which is not a user table.

Severity level:
16.

Description:
This error message appears when you try to create a FOREIGN KEY constraint for a table and the FOREIGN KEY references a database object that is not a table.

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 table objects.

Versions:
All versions of SQL Server.

Example(s):
USE tempdb;
GO
IF OBJECT_ID(‘dbo.MyDate’, ‘function’) > 0
 DROP FUNCTION dbo.MyDate
GO
CREATE FUNCTION dbo.MyDate()
RETURNS DATETIME
WITH EXECUTE AS CALLER
AS
BEGIN
 RETURN (GETDATE())
END;
GO

IF OBJECT_ID(‘tempdb..t’) > 0
 DROP TABLE t
GO
CREATE TABLE t
(
 c1 INT
 CONSTRAINT FK_t_t1_c1 FOREIGN KEY REFERENCES MyDate(c1)
)
GO

Remarks:
In the above example we try to create a FOREING KEY constraint for a table t with the user-defined function MyDate. This raises the error.

]]>

Leave a comment

Your email address will not be published.