如果我有这样的表:
ImportSet1.Users
ImportSet2.Users
ImportSet3.Users
然后在我的sproc中我这样做:
CREATE PROCEDURE [ImportSet2].[UpdateUsers]
...
UPDATE Users
set blah = 234
WHERE id = 234
这似乎有效,但为什么呢?从那时起什么前缀[ImportSet2]表示表名的一部分? (在本例中为ImportSet2)
答案 0 :(得分:3)
sproc是在ImportSet2模式下构建的,因此,默认情况下,如果未指定模式名称,它将引用ImportSet2模式中的对象。
但是,我认为最好的做法是使用模式名称对对象进行完全限定。
答案 1 :(得分:0)
要回答“从什么时候开始”,当然到2000年,您可以拥有除dbo以外的所有者拥有的对象。自2005年以来,MS分离了所有者和模式的概念。
我相信该功能出现在SQL Server的早期版本中,无论是6.5还是7.0。所以这并不是什么新鲜事(尽管2005年之前使用这个功能会有相当大的痛苦)