lon*_*ero 2 sql sql-server sql-server-2008 sql-view
由于某些部署限制,我无法在我的项目中使用同义词,因此我创建了以下视图:
CREATE VIEW [dbo].[User] AS SELECT * FROM [PersonalData].[dbo].[User]
GO
Run Code Online (Sandbox Code Playgroud)
它工作正常,但现在我需要按如下方式修改它:
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
Run Code Online (Sandbox Code Playgroud)
目前,它失败了:
Ambiguous column name 'Id'
Run Code Online (Sandbox Code Playgroud)
在LEFT OUTER JOIN
行。
但是,Microsoft SQL Management Studio 突出显示[PersonalData].[dbo].[Titles]
错误:
Invalid object name '[PersonalData].[dbo].[Titles]
Run Code Online (Sandbox Code Playgroud)
事实上,它没有为我提供该表列的智能感知。
桌子[PersonalData].[dbo].[Titles]
在那里。事实上,以下查询返回的结果没有错误:
select * from [PersonalData].[dbo].[Titles]
Run Code Online (Sandbox Code Playgroud)
我对 SQL 的了解不够深入,但我不明白为什么会这样,为什么它找到Users
table 但没有找到Titles
.
多一点上下文:
PersonalData
数据库中,而是在其他名为Platform
.Platform
数据库中创建视图。为什么会发生?
IntelliSense 问题是外围问题,可能是因为:
Id
你的意思,因为这两个表中存在),或者Edit > IntelliSense > Refresh Local Cache
(并根据该网络连接到服务器上,等待秒钟甚至几分钟)。也就是说,我建议进行两项更改,一项是认真的,一项只是最佳实践:
Id
。这个名字完全没有意义。是UserID
吗?好的,UserID
在模式中出现的任何地方都可以调用它。 归档时间: |
|
查看次数: |
15210 次 |
最近记录: |