2010-05-24 3 views
3

В настоящее время я вхожу в ситуацию, когда мы создаем базу данных «фасад», которая в основном состоит из набора представлений, которые представляют собой просто выбор из идентично названной таблицы в другой базе данных. Идея состоит в том, что приложение может быть переназначено в базу данных фасада с минимальными изменениями в фактическом коде.Усечь базовую таблицу в представлении

Это похоже на работу для вставки, обновления, удаления и, очевидно, выбора. К сожалению, некоторые из хранимых процедур используют TRUNCATE TABLE в местах. Это очень ограниченно, и наш план прямо сейчас заключается в том, чтобы просто заменить этот код вызовом хранимой процедуры «TRUNCATE», которая фактически будет обрабатывать усечение таблицы за кулисами. Прежде чем идти в ногу с этим, я хотел бы посмотреть, есть ли какие-либо другие предложения относительно того, как справиться с этим.

Спасибо за любые предложения или советы!

ответ

5

Ваш подход (использование специальных хранимых процедур) - единственный способ сделать это, потому что TRUNCATE TABLE (Transact-SQL) работает только с таблицами, а не с представлениями. Я предполагаю, что у вас есть определенная причина (быстрее и меньше ресурсов системного и транзакционного журнала) использовать TRUNCATE через DELETE, так как у вас есть DELETE, работающие над представлениями. Возможно, вы сможете что-то сделать с помощью триггера DELETE и определить, удаляются ли все строки с помощью усечения. Я думаю, что вы подходите с хранимой процедурой, это самый чистый путь.

+0

Спасибо за консультацию –