Усечь основную таблицу в представлении - PullRequest
3 голосов
/ 24 мая 2010

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

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

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

1 Ответ

5 голосов
/ 24 мая 2010

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

...