begin process at 2012 05 27 03:42:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

SQL Server, MSDE, SQL Express

 > 

Débutant(s)

 > 

Trigger before delete


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Trigger before delete

jeudi 24 août 2006 à 09:48:23 | Trigger before delete

RMI

Bonjour,

Je souhaite créé un trigger sur la suppression d'enregistrement d'un table T1. Un table T2 est lié avec T1 par une référence de clé étrangère.
Je dois donc modifier T2 avant de supprimer l'enregistrement de T1.
En résumé, je dois faire un trigger sur un BEFORE UPDATE.
Comment connaitre l'enregistrement qui va être supprimé afin de modifier T2 ?
Avez-vous un exemple?

Merci de vos réponses.

Théo
jeudi 24 août 2006 à 09:55:28 | Re : Trigger before delete

skweeky

Membre Club Administrateur CodeS-SourceS
Bonjour,

Les triggers BEFORE n'existent pas sur SQL Server, au mieu il y a les triggers INSTEAD OF.

Dans le cas présent (pour supprimer en cascade des enregistrements) il y a une solution qui est déjà prévu par Microsoft sur SQL Server depuis la version 2000 :

CREATE TABLE FACTURE
(
FAC_ID int not null identity(1,1) primary key,
CLI_ID int not null ,
FAC_MANTANT Money,
CONSTRAINT [FK_FACTURE_CLIENT] FOREIGN KEY
(
[CLI_ID]
) REFERENCES [CLIENT] (
[CLI_ID]
) ON DELETE CASCADE
);

On a créée une table facture liée à client, et on demande à propager les suppressions en cas de DELETE dans la table client.

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration
jeudi 24 août 2006 à 10:10:24 | Re : Trigger before delete

RMI

Merci pour ta réponse,

Celà colle pas tout à fait a mes besoins.

Pour simplifier, j'ai une table Personne qui à une colonne IdClassement. J'ai une table Classement avec des enreg du type idClassement, libelleClassement. et je voudrais lorsque l'on supprime un enreg de  classement mettre à jour ma colonne  IdClassement de personne à null.
Personne.IdClassement st liée par contrainte de clé étrangère à Classement.IdClassement.

Théo
jeudi 24 août 2006 à 10:43:43 | Re : Trigger before delete

skweeky

Membre Club Administrateur CodeS-SourceS
De rien :o)
samedi 26 août 2006 à 18:30:55 | Re : Trigger before delete

Malkuth

Membre Club
il ya d'auter option que CASCADE : il ya SET NULL et SET DEFAULT :


CREATE TABLE FACTURE
(
FAC_ID int not null identity(1,1) primary key,
CLI_ID int not null ,
FAC_MANTANT Money,
CONSTRAINT [FK_FACTURE_CLIENT] FOREIGN KEY
(
[CLI_ID]
) REFERENCES [CLIENT] (
[CLI_ID]
) ON DELETE SET NULL 
);

lundi 28 août 2006 à 13:58:17 | Re : Trigger before delete

RMI

Lrosque j'ajoute en fin de la description de ma contrainte 'On delete set null' , j'ai le message d'erreur suivant: Syntaxe incorrecte vers le mot clé 'set'

Est ce que cette commande est gérée par SQL Express ?
Voici ma commande.
ALTER TABLE PATIENTS ADD constraint [FK_PATIENTSCLASS_IdPatientClas] FOREIGN KEY ([IdPatientClass]) REFERENCES [PATIENTSCLASS] ([IdPatientClass]) on delete set null;

Théo
lundi 28 août 2006 à 14:02:26 | Re : Trigger before delete

Malkuth

Membre Club
Je pense que ca aurait du marché je vais voir si je trouve autre chose (pour les triggers tu peux trouver des infos dans les tutorials ).
lundi 28 août 2006 à 14:08:25 | Re : Trigger before delete

RMI

Merci pour ton aide,

En ce qui concerne la syntaxe, j'ai vérifié sur l'aide du transact-SQL et elle me semble correcte. Pour l'utilisation des triggers, le pb est que la mise à null de mes champs doit  être faite avant la suppression de l'enregistrement donc la table deleted n'est pas encore générée.

Théo
mardi 29 août 2006 à 11:48:04 | Re : Trigger before delete

skweeky

Membre Club Administrateur CodeS-SourceS
Les SET DEFAULT et SET NULL ne sont supportés que par SQL Server 2005 (Express aussi)

La syntaxe :

ALTER

TABLE PATIENTS ADDconstraint [FK_PATIENTSCLASS_IdPatientClas] FOREIGNKEY([IdPatientClass])REFERENCES [PATIENTSCLASS] ([IdPatientClass])ondeletesetnull;Fonctionne sans problèmes chez moi.

Tu es sûr de ta version ?

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration
mardi 29 août 2006 à 12:01:13 | Re : Trigger before delete

RMI

Il s'agit d'une version migrée de MSDE vers SQLExpress. Comment puis-je vérifier la version ?

Théo

1 2

Cette discussion est classée dans : enregistrement, t1, t2, trigger, before


Répondre à ce message

Sujets en rapport avec ce message

requete sql [ par benjah ] Bonjour a tous,J'ai un problème pour pondre une requete sql. Voici mon probleme:J'ai deux tables : t1 et t2pour une donnée t1 est associée [0,n] donné [trigger] Ajouter le n° de client lors d'une insertion d'enregistrement [ par gderenne ] Bonjour,J'ai développé un Trigger pour concevoir un n° de client de type 2006-00011 afin de l'ajouter à l'enregistrement que mon appli inserera dans l Optimisation d'une requête de mise à jour [ par josserand ] Bonjour, J'ai besoin de créer des requêtes de mises à jour, appelant une sous-requête. Du genre :Code :</d TRIGGER AFTER / BEFORE [ par vladam ] hello, j'ai un trigger :CREATETRIGGER dbo.IsAuthDeleted </font probleme de comparaison de table [ par ehmarc ] SalutJe suis sous MySQL voici ma requetejai deux table t1 et t2 qui ont en gros une soixantaine d'entrer chacunneje veut faire ressortir les champ qui requete jointure conditionnelle [ par floxone ] Salut, J'ai besoin de faire une requête de ce genre s'il vous plaît : SELECT SUM (v1 * (t2.v2+t2.v3+t3.v4) / v5)FROM table1 t1, table2 t2WHERE t1. Resultat incompréhensible [ par JALEO WAHRANI ] Bonjour, j'ai une base avec 2 tables: 'perso et client', perso a pour colonnes:id, prop, etatétat vaut 'Y' si on effectue un suivi, sinon (par défaut) Optimisation requete [ par citt ] Bonjour,Je suis en train d'optimiser des requêtes et je me demande qu'elle manière et la plus rapide.Voici ma table Défit pour un pro [ par zazadec ] Question de se compliquer la vie, je dois reprendre un site avec une bdd déjà existante... bref vous avez compris j'ai pas le choix.2 tables T1 et T2 Supprimer des doublons dans SQL serveur [ par henri38 ] Bonjour à tous,J'ai utiliser une source trouvée dans ce site mais je n'arrive pas à la faire marcher.Je cherche à deleter des doublons dans ma baseLa


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,151 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales