【问题标题】:run sql queries under a particular schema context在特定模式上下文下运行 sql 查询
【发布时间】:2010-05-28 05:35:40
【问题描述】:

我们正在考虑创建具有自己的 3 个表的新模式,这些表将为单个客户动态创建。

要在过程中对这些表运行特定查询,我们应该有这样的东西吗?

declare @sName nvarchar(200);
select @sName =Schema_Name from schema where Schema_Id = passed_id_from_code
ALTER USER UserName WITH DEFAULT_SCHEMA = @sName 

-- Run the statements here --
...



-- After finishing executing statements
ALTER USER UserName WITH DEFAULT_SCHEMA = db;

在这种情况下,来自不同架构的并发客户是否可以更新自己的架构表,否则会发生冲突。

欢迎您提出建议。 阿尼尔

【问题讨论】:

    标签: sql schema


    【解决方案1】:

    大多数 SQL 数据库都将每个表创建为该数据库中的唯一实体。这意味着每个表都可以单独修改和更改,而与其他表无关。 CUSTOMERA.TABLE_ONE 是数据库中与 CUSTOMERB.TABLE_ONE 不同的对象。它们确实具有相同的名称,但它们不是具有可能不同布局的同一个对象(因为它们具有不同的架构)。

    因此,除非对 RDBMS 有一些限制,否则您可以这样做。现在为每个用户使用不同的模式可能并不好。如果您正在开发同一个应用程序来处理多个客户,您必须确保它适用于所有模式和所有客户。在可能不同版本的架构中。

    如果您要使用多租户架构,使用某种对表的扩展可能更明智。因此,您有一个单独的 DB.TABLE_ONE,带有一个 CUSTOMER_DATA 列,您可以在其中以已知且灵活的格式(例如 JSON 或 XML)放置数据。一些 RDBMS 将其作为原生特性(我相信 DB2 就是其中之一)。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2020-11-12
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 2019-01-16
      • 2013-08-19
      • 2021-07-08
      • 1970-01-01
      • 2021-10-16
      相关资源
      最近更新 更多