2010-05-24 3 views
3

Je suis actuellement dans une situation où nous créons une base de données "façade" qui consiste essentiellement en un ensemble de vues qui sont simplement un choix d'une table nommée de manière identique dans une autre base de données. L'idée est que l'application peut être rejointée dans la base de données de façade avec des modifications minimales au code réel.Tronquer la table sous-jacente dans une vue

Cela semble fonctionner correctement pour les insertions, les mises à jour, les suppressions et les sélections évidentes. Malheureusement, certaines procédures stockées utilisent TRUNCATE TABLE à certains endroits. Il est très limité et notre plan consiste à remplacer ce code par un appel à une procédure stockée "TRUNCATE" qui gérera la troncature de la table en coulisse. Avant d'aller de l'avant avec cela, je voulais voir s'il y avait d'autres suggestions sur la façon de gérer cela.

Merci pour vos suggestions ou conseils!

Répondre

5

Votre approche (en utilisant des procédures spéciales stockées) est la seule façon de le faire parce que TRUNCATE TABLE (Transact-SQL) ne fonctionne que sur les tables, pas sur les vues. Je suppose que vous avez une raison spécifique (plus rapide et utilise moins de ressources du système et du journal des transactions) pour utiliser TRUNCATE plutôt que DELETE, puisque les DELETE fonctionnent sur les vues. Vous pourriez être en mesure de faire quelque chose avec un déclencheur DELETE, et de détecter si toutes les lignes sont supprimées, utilisez une troncature. Je pense que vous approchez avec une procédure stockée est le moyen le plus propre à aller.

+0

Merci pour le conseil –

Questions connexes