|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : janvier 2010 Messages : 16 ![]() |
bonjour à tous,
j'ai une table A et une table B. j'ai un trigger AFTER INSERT sur A qui insert des enregistrements de A dans B seulement si le champ n°1 de A est egal à 2. je dois ecrire maintenant le trigger AFTER UPDATE sur A. evidemment dans celui ci je devrais faire soit un insert soit un update dans la table B selon si l'enregistrement est deja present dans la table B ou pas. je rappelle que pour qu'un enregistrement de A soit copié dans B la condition reste la meme ( le champ n°1 de A doit etre egale à 2). voila, j'ai besoin de votre aide pour ecrire un joli trigger ensembliste. |
|
|
00
|
|
|
#2 | ||
|
Invité de passage
![]() Inscription : janvier 2010 Messages : 16 ![]() |
je vais detaillé davantage ma situation afin de vous donner envies de m'aider
la table A se nomme "annonces" et se compose des champs : id_annonce,code_modele,prix,annee,detail,valide,etc.... la table B se nomme "recherche " et se compose de id_annonce,code_marque,code_modele,libelle_marque,libelle_modele,prix,annee,detail le but est de copier les enregistrements de la table annonce dont le champ valide = 2 le trigger AFTER INSERT sur la table A "annonces" est comme ceci : Code :
je pense que je dois forcement differencier ceux qui ont deja été inserrer dans la table recherche de ceux qui ne s'y trouvent pas encore... mais je bloque. je tiens a ce que mon trigger soit ensembliste car je peux faire des updates multiples. |
||
|
|
00
|
|
|
#3 | ||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 669 ![]() |
Bonjour,
Allons allons, bien sûr que si ça nous intéresse ! Donc pour faire l'ajout des recherches qui n'existent pas, et seulement de celles-ci, vous pouvez utiliser une demi-jointure gauche : - à gauche de LEFT JOIN, la table actuelle - à droite la table virtuelle inserted Les lignes à insérer sont donc celles qui n'ont pas d'identifiant dans la table actuelle (recherche_id IS NULL). En ce qui concerne la mise à jour, vous ne pouvez l'effectuer que sur les lignes qui existent déjà, donc l'INNER JOIN (équi-jointure) convient ici. Cela donne : Code :
N'oubliez jamais de qualifier les nom des objets que vous manipulez (table, vue, procédure stockée, fonction) par le nom du schéma auquel ils appartiennent : ça fait du travail en moins pour SQL Server et juste un peu plus pour vous @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||
|
00
|
Copyright © 2000-2012 - www.developpez.com