由于一些部署限制,我不能在我的项目中使用同义词,所以相反,我创建了这个视图:
CREATE VIEW [dbo].[User] AS SELECT * FROM [PersonalData].[dbo].[User]
GO
它工作正常,但现在我需要修改它如下:
ALTER VIEW [dbo].[User] AS
SELECT [Id],
t.[Name] AS [Title],
[FirstName],
[LastName],
[JobTitle],
[Department],
[EmailAddress],
[PhoneNumber],
[PhoneExtension],
[MobilePhoneNumber],
[CreatedDate],
[ModifiedDate],
[Uid],
[Active]
FROM [PersonalData].[dbo].[User] AS u
LEFT OUTER JOIN [PersonalData].[dbo].[Titles] AS t ON u.TitleId = t.Id
GO
目前,它失败了:
Ambiguous column name 'Id'
LEFT OUTER JOIN
在行中。
但是,Microsoft SQL Management Studio 突出显示[PersonalData].[dbo].[Titles]
错误:
Invalid object name '[PersonalData].[dbo].[Titles]
事实上,它并没有为我提供该表的列的 IntelliSense。
桌子[PersonalData].[dbo].[Titles]
在那里。事实上,以下查询返回的结果没有错误:
select * from [PersonalData].[dbo].[Titles]
我对 SQL 的了解不够深入,但我不明白为什么会这样,为什么它找到Users
table 但没有找到Titles
。
更多上下文:
- 我正在创建的视图不在
PersonalData
数据库中,而是在其他名为Platform
. - 我检查了上下文,没关系,我正在
Platform
数据库中创建视图。
为什么会这样?