在视图中截断基础表

时间:2010-05-24 15:22:47

标签: sql-server-2008 view truncate

我目前正处于创建“facade”数据库的情况,该数据库基本上由一组视图组成,这些视图只是从另一个数据库中具有相同名称的表中进行选择。我们的想法是,可以将应用程序重新命名为facade数据库,只需对实际代码进行最少的更改。

这似乎适用于插入,更新,删除和显然选择。不幸的是,一些存储过程在某些地方使用TRUNCATE TABLE。这是非常有限的,我们现在的计划是通过调用“TRUNCATE”存储过程来替换该代码,该存储过程实际上将处理幕后的表截断。在开始之前,我想看看是否还有其他建议如何解决这个问题。

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

1 个答案:

答案 0 :(得分:5)

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