SQL Server: Can the same table exist in multiple schemas

前端 未结 5 1660
Happy的楠姐
Happy的楠姐 2021-02-20 05:26

I thought that the schemas are namespace instances and hence the same table created under 2 different schemas are 2 different objects from the perspective of the database. One o

相关标签:
5条回答
  • 2021-02-20 05:41

    I guess that you are trying to solve an issue by dividing data with the same data-structure between different tenants. You don't want to use different databases to reduce costs.

    To my mind, it is better to use row-level security in this case. In this case, data are stored in one table, but one tenant can't access data that were created by another tenant.

    You could read more in the next article - Row-Level Security

    0 讨论(0)
  • 2021-02-20 05:45

    myschema.table1 is different than yourschema.table1

    0 讨论(0)
  • 2021-02-20 05:46

    They are 2 different objects, check the object_id

    0 讨论(0)
  • 2021-02-20 05:50

    Yes, it can. Just try it

    CREATE SCHEMA OneSchema AUTHORIZATION dbo;
    CREATE SCHEMA TwoSchema AUTHORIZATION dbo;
    CREATE TABLE dbo.SomeTable (foo int);
    CREATE TABLE OneSchema.SomeTable (foo int);
    CREATE TABLE TwoSchema.SomeTable (foo int);
    

    A schema is both a securable and part of the "namespace"

    0 讨论(0)
  • 2021-02-20 05:55

    You are correct.

    CREATE TABLE foo.T
    (
    c int
    )
    

    and

    CREATE TABLE bar.T
    (
    c int
    )
    

    creates 2 separate objects. You could create a synonym bar.T that aliases foo.T though.

    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;
    
    0 讨论(0)
提交回复
热议问题