5

我目前正在创建一个“外观”数据库,该数据库基本上由一组视图组成,这些视图只是从另一个数据库中的同名表中选择的。这个想法是应用程序可以重新指向外观数据库,而对实际代码的更改最少。

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

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

4

1 回答 1

7

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

于 2010-05-24T15:36:07.567 回答