(houuuu, le titre provoc’ !!)
Il ne tient qu’à vous de me prouver le contraire en m’indiquant comment faire une suppression en cascade dans une table SQL Server (2000) automatiquement sans fioriture.
Ce n’est pas pour moi, c’est pour une collègue mais ça l’aidera grandement, merci pour elle !
extrait de la doc SQL Server 7
"Les contraintes FOREIGN KEY ne prennent pas en charge les activités en cascade et peuvent valider uniquement une valeur de colonne coïncidant exactement avec une valeur d’une autre colonne. Si votre application exige qu’une suppression dans une table entraîne la suppression des données correspondantes dans une autre table, ou si l’intégrité référentielle exige plus qu’une concordance exacte, vous devez utiliser un déclencheur."
[i](Arrggll! Putain qu’on ne me parle plus d’Access aaaaah, blup, blup, gloup. Le titre trollien par excellence. Ouf le contenu ne l’est pas.)
[/i]
[i]SQL Pro de F.Brouard - LE SQL de A à Z - 7e partie création des schéma - CREATE, DROP, ALTER extrait:
"7.3.2 Mode de gestion de l’intégrité clauses ON UPDATE / ON DELETE
Le mode de gestion de l’intégrité consiste à se poser la question de ce que la machine doit faire dans le cas ou l’on tente de briser une intégrité référentielle.
[…] ON DELETE CASCADE / ON UPDATE CASCADE : en cas de suppression d’un élément, les éléments qui le référence sont aux aussi supprimés. En cas de modification de la valeur de la clef, les valeurs des clefs étrangères qui le référence sont elles aussi modifiées afin de maintenir l’intégrité. Par exemple en cas de suppression d’un client les factures et commandes sont elles aussi supprimées.
[…]
NOTA : certains SGBDR n’ont pas implémenté le mode de gestion de l’intégrité. C’est le cas en particulier de MS SQL Server. En revanche, il est courant de trouver dans les SGBDR des options plus limitées que celles fournies par la norme
"
[/i]
Donc la réponse c’est:
à la main ou en utilisant une petite procédure avec des curseurs.
Taratata! En fait, c’est prévu d’origine sur les versions récentes (à partir de 2000, je crois).
Dans le Enterprise Manager, sur un schéma par exemple, il suffit de sélectionner une relation, d’appeler sa feuille de propriétés, et là, ô miracle, en bas de la page, on lit des trucs du genre “cascade update related fields” (oooh!) ou encore “cascade delete related records” (aaah!)
Alors bien sûr, en sous-marin, ça va créer des triggers, mais automatiquement.
Merci qui? Ce message a été édité par boudin le 03/10/2003
Ah en général les SGBDR évoluent lentement pour ce qui est des commandes SQL.
Désolé (Quand on pense que mon SGBDR adoré, Oracle, a attendu la version 8.x pour accepter CASE WHEN à la place de DECODE)
Mais effectivement http://www.microsoft.com/france/sql/decouvrez/improve.asp
" Découvrir SQL Server
Amélioration de la productivité des développeurs
[…]
SQL Server 2000 inclut d’autres améliorations de programmation notables, notamment : Contraintes d’intégrité référentielle en cascade Définit des actions automatiquement mises en œuvre lors d’une tentative de suppression ou de mise à jour d’une clé vers laquelle pointent des clés étrangères existantes.
"