2010-10-29 35 views
3

Ma question est un peu semblable à this onepour violation de contrainte d'intégrité dans SQL avant la suppression

Je veux vérifier si une requête SUPPRIMER échoue à cause d'une violation de contrainte. Je voudrais faire cela au niveau de la base de données parce que je pense que le laisser échouer et attraper l'erreur est moche.

Une autre option consiste à le vérifier manuellement à l'aide de requêtes SELECT pour voir s'il existe des contraintes, mais c'est plutôt fastidieux, à mon avis.

Existe-t-il un moyen «natif» de faire cela?

Répondre

3

La méthode la plus simple et la plus directe consiste à exécuter DELETE et à intercepter l'erreur.

Si vous exécutez une instruction SELECT sur d'autres tables, vous pouvez savoir si des lignes existent (impliquant une contrainte de clé étrangère). Mais les contraintes de clés étrangères ne sont que l'un des nombreux types de contraintes d'intégrité.

Vous devez également considérer que certaines contraintes d'intégrité peuvent être implémentées avec des triggers (pour de bonnes raisons, de mauvaises raisons ou aucune raison).