[PostgreSQL] Triggers et JDBC

Triggers et JDBC [PostgreSQL] - SQL/NoSQL - Programmation

Marsh Posté le 22-04-2005 à 15:19:02    

Salut,
 
J'ai besoin de vos lumières:
J'ai une table A et un Trigger "AFTER INSERT" sur cette table qui lance une procédure stockée assez longue (1min). Lorsque j'insère une ligne dans cette table A avec un prog Java (et donc un accès JDBC), le programme se termine seulement après avoir terminé la procédure stocké. Je pensais que Postgre effectuer les Trigger en Background et qu'il rendrait la main juste après l'insert. Si je remplace le prog Java par une page Web JSP, l'utilisateur devra attendre 1min avant d'avoir le retour de la page sur l'action d'insertion  :whistle: . Plutôt long pour un utilisateur ...
 
Y a-t-il un moyen pour que JDBC rende la main juste après l'insert?
 
Merci

Reply

Marsh Posté le 22-04-2005 à 15:19:02   

Reply

Marsh Posté le 22-04-2005 à 15:29:53    

et le code de retour, comment veux-tu l'avoir si le trigger est pas terminé?

Reply

Marsh Posté le 22-04-2005 à 15:42:28    

Je n'ai pas besoin du code retour. Si le Trigger plante, une exception PostgreSQL sera levée.

Reply

Marsh Posté le 22-04-2005 à 16:30:45    

bah oui, mais on va poser la question autrement. Comment veux-tu avoir l'exception si jdbc te rend la main?
 
Tu peux toujours l'encapsuler dans un thread mais tu devra quand même attendre que ça se termine...

Reply

Marsh Posté le 22-04-2005 à 16:46:35    

Si le trigger fait partie intégrante de l'opération, faudra bien attendre.
 
Si ce n'est pas le cas, ton design DB n'est pas en phase avec ton appli... Soit ton appli attend, soit tu revois ta DB.
 
Une stored proc qui prend une minute après chaque insert... Heu, je suppose que tu ne fais que peu d'inserts, et que c'est réservé à des admins ?


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 22-04-2005 à 16:49:32    

Effectivement ce ne sera pas une opération qui sera fréquemment executée. Il y a la solution du Thread à laquelle j'avais pensé mais bon, c'est pas la joie à gérer sur une page Web...
Si vous avez d'autres idées je suis preneur. Merci

Reply

Marsh Posté le 22-04-2005 à 16:55:42    

La solution thread ne t'apportera rien sur une page web :
 
- Ou bien tu es condamné à attendre le résultat, et ça revient strictement au même que de faire ça dans le thread de départ;
- Ou bien tu n'attend pas la fin du thread-trigger, mais tu ne connais pas le résultat de l'opération, ce qui revient à changer la fn de ton application !
 
Possibilité alternative : exécution sous réserve de bonne fin. Ca arrive souvent sur des système où le processing ne se fera que la nuit, p.e. parce que connectivité avec un système tiers... Mais là, impact important sur ton application!


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed