2010-05-24 61 views
3

我目前正在创建一个“外观”数据库,这个数据库基本上由一组视图组成,这些视图只是从另一个数据库中的同名表中选择的一个视图。这个想法是,应用程序可以通过对实际代码进行最小限度的更改而重新指定到Facade数据库。在视图中截断底层表

这似乎工作正常插入,更新,删除,并明显选择。不幸的是,一些存储过程在地方使用了TRUNCATE TABLE。这是非常有限的,我们现在的计划是用一个调用“TRUNCATE”存储过程来代替该代码,该存储过程实际上将处理幕后的表格截断。在继续讨论这个问题之前,我想看看是否还有其他建议来处理这个问题。

感谢您的任何建议或意见!

回答

5

您的方法(使用特殊的存储过程)是唯一的方法,因为TRUNCATE TABLE (Transact-SQL)只适用于表格,而不适用于视图。我想你有一个特定的原因(更快,并使用更少的系统和事务日志资源)使用TRUNCATE DELETE,因为你有DELETE处理视图。您可能可以使用DELETE触发器执行某些操作,并检测是否使用截断删除了所有行。我认为你使用存储过程是最干净的方法。

+0

感谢您的意见 – 2010-05-24 17:35:13