Я пытаюсь создать индекс в моей базе данных SQL Server 2008.Как добавить привязку схемы к представлению в SQL Server 2008
Но я сталкиваюсь ошибку, когда я раскомментировать WITH SCHEMABINDING
:
USE UNIVERSITY
GO
CREATE VIEW dbo.Major_Education_Category
WITH SCHEMABINDING
AS
SELECT CA.CName, MA.MName
FROM
(SELECT M.Major_ID MID , Major_Name MName
FROM Major M, Registration R
WHERE M.Major_ID = R.Major_ID) MA,
(SELECT C.Category_ID CId, C.Category_Name CName
FROM Education_Category C, Registration R
WHERE C.Category_ID = R.Category_ID) CA
GROUP BY
CA.CName, MA.MName
CREATE UNIQUE CLUSTERED INDEX UCI_Major_Id_By_Education_Category
ON dbo.Major_Education_Category (MName)
GO
CREATE UNIQUE CLUSTERED INDEX UCI_Category_Id_By_Major
ON dbo.Major_Education_Category (CName)
GO
Ошибка:
Msg 4512, Level 16, State 3, Procedure Major_Education_Category, Line 6
Cannot schema bind view 'dbo.Major_Education_Category' because name 'Major' is invalid for schema binding. Names must be in two-part format and an object cannot reference itself.
[Плохие привычки пинать: использование старого стиля JOIN и] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick -using-old-style-joins.aspx) - стиль старого стиля * разделенный запятыми список таблиц * был отменен с помощью ANSI - ** 92 ** SQL Standard (более ** 20 лет ** назад) –
Почему вы перекрещиваетесь с производными таблицами 'MA' и' CA'? –