[ms sql serveur] on delete cascade

Soyez le premier à donner votre avis sur cette source.

Snippet vu 17 067 fois - Téléchargée 23 fois

Contenu du snippet

Bonjour a tous,

Je pense que ce p'tit exemple pourrait servir a plusieurs d'entre vous !

Il s'agit de faire du delete on cascade ou plus exactement
de supprimer des enregistrements presents dans une table (EX : Tcivilites)
qui est en relation avec une autre (EX : Tpersonnes) par une foreign key
place dans la table Tpersonnes.

Si je supprime une ligne de la table Tcivilites et que j'ai une reference qui pointe sur la table
Tpersonnes je vais bien sur avoir un message d'erreur du sgdbr !

Pour remedier a cela, utilisez le on delete cascade qui est bien pratique !
Donc si je supprime une ligne de la table Tcivilites et que je retrouve
sa reference dans la table Tpersonnes il me supprimera toutes les lignes correspondantes !

Voila suffit de copier coller le script dans l'analyseur de requete et le tour est joue.

Source / Exemple :


/** Les tables pour l'exemple **/ 

create table Tcivilites
(
ID int not null primary key identity,
sexe varchar(20)

)
GO	

create table Tpersonnes
(
ID int not null primary key identity,
nom varchar(50),
prenom varchar(50),
fkcivilite int foreign key references Tcivilites(ID) on delete cascade 

)

Go

/** Quelques donnees pour la table Tcivilites **/
insert into Tcivilites(sexe) values('Madame') 
insert into Tcivilites(sexe) values('Mademoiselle')
insert into Tcivilites(sexe) values('Monsieur')

/** Donnes pour la table Tcategories **/

insert into Tpersonnes(nom, prenom, fkcivilite) values('BERNARD','Christophe',3)
insert into Tpersonnes(nom, prenom, fkcivilite) values('Thunissen','Marc',2)
insert into Tpersonnes(nom, prenom, fkcivilite) values('RIOLO','Francis',2)

/** Supprimons une ligne de la table Tcivilites 

    • et nous verrons que les donnees contenues dans la table
    • Tpersonnes seront bien supprimees aussi
    • /
DELETE from Tcivilites where ID = primarykey_Tcivilite

Conclusion :


Voila, pour ceux qui ont deja un schema de DB cree, il faut commencer par supprimer
la constrainte de foreign key cree (ALTER TABLE NomDB DROP CONSTRAINT NomContrainte)
et recree une nouvelle contrainte (ALTER TABLE NomDB ADD CONSTRAINT ..) avec l'option on delete cascade .

Pour ceux qui utilise plus souvent que moi Ms sql serveur, serait il possible de faire la même chose
avec un trigger !?Merci !

Bon week end..
Christophe
Un bouillonnais..

A voir également

Ajouter un commentaire

Commentaires

anwar666
Messages postés
24
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
12 juillet 2010
-
salut j'ai une question , est ce que c'est Faisable d'ajouter plusieurs enregistrement à la fois dans une table en sql server 2000 !!!!
Mèrci D'avance !!
Cordialement !!
cs_jimmy69
Messages postés
787
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
27 novembre 2008
-
Salut salut,

content que cela puisse te servir !

Bon coding
Christophe
habbaz1
Messages postés
3
Date d'inscription
lundi 26 juin 2006
Statut
Membre
Dernière intervention
28 septembre 2007
-
merciiiiiiiiiiiiiiiiiiii bcp "Malkuth"
cs_jimmy69
Messages postés
787
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
27 novembre 2008
-
Merci a ceux qui ont note cette source..ca fait plaisir de savoir que l'on peut aide certains !

Car grace a tout le reseaux codes sources (c#, sql, etc..) j'en ai gagne du temps !

Bon dev a tous et bonnes vacances ..
Christophe
Un bouillonnais
cs_jimmy69
Messages postés
787
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
27 novembre 2008
-
salut salut Malkuth,

Merci des que j'ai un peu de temps je test cela et te dit quoi !

Je te remercie deja pour les infos !

Bon week end ..on a enfin du soleil sur la belgique ahhh que du bonheur !

Christophe
un bouillonnais

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.