SQL Server:多个模式中是否存在相同的表

Sir*_*een 9 sql-server

我认为模式是名称空间实例,因此在2个不同模式下创建的同一个表是从数据库的角度来看的2个不同的对象.我的一位同事声称模式只不过是一个安全容器,因此我们可以在不同的模式中创建相同的表.这是真的?

Mar*_*ith 15

你是对的.

CREATE TABLE foo.T
(
c int
)
Run Code Online (Sandbox Code Playgroud)

CREATE TABLE bar.T
(
c int
)
Run Code Online (Sandbox Code Playgroud)

创建2个独立的对象.您可以创建一个别名的同义词 .bar.Tfoo.T

CREATE SCHEMA foo
GO
CREATE SCHEMA bar
GO
CREATE TABLE foo.T(c INT)
GO
CREATE SYNONYM bar.T FOR foo.T;
INSERT INTO foo.T VALUES (1);
SELECT * FROM bar.T;
Run Code Online (Sandbox Code Playgroud)