【问题标题】:using views, abstracting actual tables, updating multiple tables using views使用视图,抽象实际表,使用视图更新多个表
【发布时间】:2011-03-09 06:46:15
【问题描述】:

是否可以使用单个视图将数据同时插入三个表中。 我正在使用视图从最终用户那里抽象出我的数据库实际表,以直接将数据插入其中。 该视图将充当我实际表的保护层。 但我有 3 个表,想在其中插入数据。

但是由于一个视图不能用于修改多个表。那么有什么解决办法呢?

我是否需要创建 3 个单独的视图并运行:

Insert into View1 values()
Insert into View2 values()
Insert into View3 values()

【问题讨论】:

  • 视图可以更新,但有一些限制。我认为您最好将插入逻辑放入存储过程中。
  • @OMG Ponies:亲爱的女士,您的意思是说我将创建一个过程并在其中简单地给出插入查询。就是这样。还是有一些复杂的代码?
  • 您提到要插入三个表,因此在存储过程中将是三个 INSERT。如果你需要,它会支持额外的逻辑。
  • @OMG Ponies:另外,对于调解员,我应该使用什么?实际上,我的老板使用 foxpro,为了防止最终用户直接访问实际表,他使用了一个新表作为中介。如果有任何不良影响,那么首先它会发生在中介表上。那么在 sql server 中我应该使用什么?
  • 你必须解释你的调解员在做什么

标签: c# sql sql-server sql-server-2005 tsql


【解决方案1】:

如果您想从一个视图更新多个表,您可能必须在视图上创建一个或多个* INSTEAD OF triggers。然后,您可以使用 inserteddeleted 伪表来制作应该应用于每个基表的插入/更新/删除。

*如果您针对视图执行的插入和更新操作有很多共同点,我建议您使用单个触发器。如果操作完全不同,我建议将触发器分开。

【讨论】:

    猜你喜欢
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多