Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1227 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [RESOLU][SQL] Recuperer une donnee qui vient d'etre updaté

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU][SQL] Recuperer une donnee qui vient d'etre updaté

n°730549
cixen
J'adore l'informatique !
Posté le 18-05-2004 à 17:29:54  profilanswer
 

Bonjour.  
En fait je lance un trigger sur l'update d'une champ d'une table
et je me demande comment récupérer un autre la valeur d'un autre champ mais qui correspont à la même ligne de ce celui qui vient de se faire "updaté".
Merci d'avance


Message édité par cixen le 18-05-2004 à 18:22:05
mood
Publicité
Posté le 18-05-2004 à 17:29:54  profilanswer
 

n°730558
pascal_
Posté le 18-05-2004 à 17:42:14  profilanswer
 

Tu dois pouvoir retrouver facilement l'identifiant de la ligne updaté, non  :??:  
 
et pis, c'est qu'elle base : Oracle ?

n°730613
cixen
J'adore l'informatique !
Posté le 18-05-2004 à 18:21:47  profilanswer
 

C'est une base SQL Server, mais si tu veux il faut récupérer les infos de la ligne qui vient d'être updaté.
J'ai trouvé la soluce. Il suffit de rechercer les infos dans la table inserted ou deleted car lors d'un update on fait les 2 opérations.  
Donc on déclare une variable du type voulu et après on fait :
 

Code :
  1. SELECT @var = Champ FROM inserted


 
voilà c'est tout con et en plus c'est indiqué dans l'aide... Mea culpa

n°1135487
nadass
Posté le 30-06-2005 à 10:15:02  profilanswer
 

bonjour,
 
je dois faire la meme chose que toi, mais la seule différence c que je dois mettre le contenu du résultat dans un fichier.
 
voilà mon trigger qui fonctionne tres bien mais sans bcp
 
quand j'utilise le bcp pour mettre le résultat dans un fichier, il me dit qu'il ne trouve pas la table inserted, normal c une table logique !!
 
comment je peux faire pour lui indiquer l'em placement de cette table inserted ?
tempdb.inserted marche pas  :??:  
temp.inserted marche pas non plus  :(  
 
create trigger test on client
for update
as
EXEC master.dbo.xp_cmdshell ' bcp "select * from inserted for xml auto" queryout c:\toto.xml -c'

n°1135500
Zzozo
Un peu, passionément, à la fol
Posté le 30-06-2005 à 10:22:55  profilanswer
 

Un bcp dans un trigger  [:wam]
T'es vraiment obligé ?  t'as pas d'autre choix ?
J'ose pas imaginer ce que ca peut donner sur un appli "transactionnelle" lourde  :/
 
EDIT : Et il faut pas s'assurer que tu génères un nom de fichier unique à chaque fois ?


Message édité par Zzozo le 30-06-2005 à 10:23:36
n°1135515
nadass
Posté le 30-06-2005 à 10:36:54  profilanswer
 

la gestion du nom je m'en charge
 
mais je suis obligé de générer un xml qui contient le nouveau record.
 
comment tu ferais toi ?
mieux que le bcp ? et surtout comment accéder à cette table inserted ?

n°1135520
Zzozo
Un peu, passionément, à la fol
Posté le 30-06-2005 à 10:40:50  profilanswer
 

nadass a écrit :

la gestion du nom je m'en charge
 
mais je suis obligé de générer un xml qui contient le nouveau record.
 
comment tu ferais toi ?
mieux que le bcp ? et surtout comment accéder à cette table inserted ?


Le pb c'est pas le bcp en lui même, mas plutot l'utilisation du bcp dans le trigger, AMHA
Tu peux pas avoir un processus différent de ton SGBDR, s'exécutant à intervalles réguliers et faisant les bcp dont tu as besoin (ce serait donc un programme client de ton SGBDR) ?

n°1135523
nadass
Posté le 30-06-2005 à 10:42:52  profilanswer
 

y n'a pas beaucoup de modification donc je penses que cela n'impactera pas la db.
 
mais mon pb c justement de faire reference dans le bcp, essai de faire une test chez toi tu verras que la table inserted dans le bcp n'est pas reconnue

n°1135534
Zzozo
Un peu, passionément, à la fol
Posté le 30-06-2005 à 10:49:13  profilanswer
 

nadass a écrit :

y n'a pas beaucoup de modification donc je penses que cela n'impactera pas la db.
 
mais mon pb c justement de faire reference dans le bcp, essai de faire une test chez toi tu verras que la table inserted dans le bcp n'est pas reconnue


 
Mais ça je le sais que tu peux pas manipuler 'inerted' & co comme tu veux, et pour cause ...
La question à se poser est plutot "As tu vraiment besoin de générer des fichiers de façon absolument synchrone avec toute modification dans cette table ?"
 
Enfin bon, si tu as pas bcp de modifications ... (j'espère que tu es sur de toi, parce si un jour qqun s'amuse à faire des gros update par batch, par exe., dans cette table, ça va être marrant niveau temps d'execution je pense ... )


Message édité par Zzozo le 30-06-2005 à 10:49:47
n°1135541
Zzozo
Un peu, passionément, à la fol
Posté le 30-06-2005 à 10:50:52  profilanswer
 

C'est quoi la volumétrie de cette fameuse table d'ailleurs ?
Peut elle être "chargée" à coup de "bcp in" de temps en temps ?

mood
Publicité
Posté le 30-06-2005 à 10:50:52  profilanswer
 

n°1135920
nadass
Posté le 30-06-2005 à 14:26:26  profilanswer
 

Zzozo tu pourrais me dire comment utiliser la table inserted dans un bcp stp
ca m'aiderait beaucoup

n°1136234
nadass
Posté le 30-06-2005 à 17:01:04  profilanswer
 

Zzozo si tu connais la reponse tu pourrais m'aider ?

n°1136266
Zzozo
Un peu, passionément, à la fol
Posté le 30-06-2005 à 17:29:11  profilanswer
 

inserted, updated et deleted ne sont pas accessibles en dehors des triggers correspondants ...


---------------
« Ce qui ne vous tue pas vous rend plus fort » F. Nietzsche | « Vise_ la Lune. Si tu rates, au pire, t'es dans la merde » Un poète disparu dans le cercle
n°1136657
Arjuna
Aircraft Ident.: F-MBSD
Posté le 30-06-2005 à 23:50:42  profilanswer
 

declare @cmd varchar(255)
select @cmd = 'bcp "select ' + inserted.val1 + ', ' + ... + ' for xml auto" queryout c:\toto.xml -c'
EXEC master.dbo.xp_cmdshell @cmd
 
Ceci dit, je trouve ça très moyen... D'autant plus qu'il y a une fonctionsystème qui permet déjà d'écrire le contenu d'une requête dans un fichier XML il me semble...

n°1136872
nadass
Posté le 01-07-2005 à 10:37:02  profilanswer
 

Arjuna a écrit :

declare @cmd varchar(255)
select @cmd = 'bcp "select ' + inserted.val1 + ', ' + ... + ' for xml auto" queryout c:\toto.xml -c'
EXEC master.dbo.xp_cmdshell @cmd
 
Ceci dit, je trouve ça très moyen... D'autant plus qu'il y a une fonctionsystème qui permet déjà d'écrire le contenu d'une requête dans un fichier XML il me semble...


 
et c quoi cette commande arjuna

n°1137024
Arjuna
Aircraft Ident.: F-MBSD
Posté le 01-07-2005 à 11:50:13  profilanswer
 

J'en sais rien, je regarde. Je suis presque sûr de l'avoir trouvée l'autre jour quand je voulais justement générer des fichiers à partir de SQL Server (et ça m'avait gonflé, parcequ'il n'y a rien pour faire un fichier texte classique)

n°1137037
nadass
Posté le 01-07-2005 à 11:54:14  profilanswer
 

arjuna g un pb avec ton code dans le trigger, il ne reconnait pas les +
 
inserted.val1 c'est quoi ?

n°1137388
Arjuna
Aircraft Ident.: F-MBSD
Posté le 01-07-2005 à 15:53:35  profilanswer
 

tu peux pas faire de select * dans la chaîne, donc il faut prendre tous les champs 1 à un.
sinon, ben les +, c'est pour concaténer les bouts de chaîne.
 
par contre, j'ai oublié le "from inserted" à la fin du select

n°1137391
Arjuna
Aircraft Ident.: F-MBSD
Posté le 01-07-2005 à 15:53:59  profilanswer
 

sinon, pas trouvé le truc pour écrire un fichier xml (j'ai dû rêver ^^)

n°1137576
nadass
Posté le 01-07-2005 à 17:29:12  profilanswer
 

Zzozo à écrit :
inserted, updated et deleted ne sont pas accessibles en dehors des triggers correspondants ...
 
Arjunna g la meme erreur avec ton code ca fonctionne chez toi ca ?
 
declare @cmd varchar(255)
select @cmd = 'bcp "select racine from inserted ' + inserted.racine for xml auto" queryout c:\toto.xml -c'
EXEC master.dbo.xp_cmdshell @cmd  
 
il doit te dire qu'il ne reconnait pas inserted non ?

n°1137639
Arjuna
Aircraft Ident.: F-MBSD
Posté le 01-07-2005 à 18:57:04  profilanswer
 

:heink:
 
nan, ça risque pas de fonctionner :p
 

Code :
  1. declare @cmd varchar(255)
  2. select @cmd = 'bcp "select ' + racine + ' racine from inserted for xml auto" queryout c:\toto.xml -c' + from inserted
  3. EXEC master.dbo.xp_cmdshell @cmd


 
Ca doit être mieu

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [RESOLU][SQL] Recuperer une donnee qui vient d'etre updaté

 

Sujets relatifs
[JS/HTML] récuperer les coordonnées d'un clic sur une image[JavaScript] Peut-on récupérer l'URL correspondante à history.go(-2)
[c][Resolu]Passage d'un tableau à une fonction[Access / Sql] Comment mettre un critere sur les 3 dernieres semaines
RECUPERER UN RESULTAT DANS UNE VARIABLE[RESOLU][Php] Exporter du php en html !!!???
[java] comment recupérer une page html online dans une application ?Sql*Loader
Crystal Report 7 vs SQL server 2000Question sur les JPanel [résolu] + question sur les listeners [résolu]
Plus de sujets relatifs à : [RESOLU][SQL] Recuperer une donnee qui vient d'etre updaté


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR