J'utilise sqlite3 sous Linux et j'ai actuellement un problème. J'ai une base de données et 2 tables: db1 et db2. db1 a 3 colonnes: empID, empName, empAddr. db2 a juste 1 colonne: empID et sa valeur est définie à 0 par défaut.Comment débloquer une base de données SQLite lorsqu'un autre programme y accède?
J'ai créé un programme C qui interroge en permanence la 2ème base de données db2 pour tout changement de la valeur de empID. En fonction de la nouvelle valeur de empID dans db2, le programme récupère les informations correspondantes à partir de db1. Par exemple, si la valeur de empID dans db2 est changée en 1, le programme cherche les informations (empName et empAddr) de db1 qui correspondent à un empID égal à 1. Cependant quand j'exécute 2 terminaux: 1 pour changer manuellement la valeur de empID dans DB2 et un autre 1 pour l'exécution du programme C, j'ai rencontré le problème d'une base de données verrouillée. Pendant que le programme fonctionne et accède à la base de données, je veux changer la valeur de empID dans db2 mais je comprends que puisque mon programme C y accède, je ne peux pas mettre à jour la valeur de empID (sauf si je ferme le terminal). Donc ma question est, est-il un moyen de mettre à jour/modifier la valeur de empID dans db2 pendant que j'accède db2 à travers mon programme? Les réponses seront grandement appréciées. Je vous remercie.
Comment puis-je insérer dans le programme l'instruction pragma? – user523438
Vous exécutez simplement le pragma comme n'importe quelle autre instruction SQL. –
OK merci, j'ai un nouveau problème cependant. La déclaration PRAGMA a juste fonctionné une fois. Par exemple, pendant que mon programme interroge la table, j'ai modifié le contenu de la table et mon programme d'interrogation a réagi en conséquence. Mais quand j'ai essayé de changer le contenu de la table, la même erreur s'est produite: la base de données est verrouillée. Cela pourrait-il être corrigé de telle sorte que le contenu de la table puisse être changé autant de fois que possible? – user523438