Bonjour,
J'ai un problème que je ne parviens pas à régler.
J'ai une table TBL_TRAITEMENT composée de 3 colonnes
ID_TRAITEMENT int
VALEUR varchar(255)
STATUT smallint (default = 0)
Lors de traitements dans la BDD des triggers placés sur différentes tables insèrent des enregistrement dans la table TBL_TRAITEMENT
A intervalles réguliers des scripts (PHP) ouvrent une connexion à la BDD et créent des fichiers texte formatés sur un serveur partagé.
Lorsqu'un enregistrement a été traité son statut passe de 0 à 1 pour ne plus avoir à le re-traiter.
Mais il arrive que la connexion au serveur partagé soit interrompue en cours de traitement. Dans ce cas la génaration du fichier échoue mais les premiers enregistrements traités ont vu leur statut passer de 0 à 1 alors que le fichier texte n'a pas été généré.
Je souhaiterais donc ouvrir une transaction en début de traitement et la valider si le traitement total réussi. Faire un commit en fin de script.
Le problème que j'ai est que, pendant l'exécution du script (qui peut être assez long) la table TBL_TRAITEMENT est verrouillée et les triggers ne peuvent donc écrire dans cette table.
Comment faire, si c'est possible, pour que cette table ne soit pas verrouillée pendant le traitement, sans toucher au niveau d'isolation de toute la base.
Les triggers ne font que des insert et le script qui n'est appelé que d'un seul poste ne fait que des select et un update des statuts.
j'espère avoir été suffisamment clair.
Merci
Partager