Re: COMMIT or not COMMIT ?
Citation:
Envoyé par PaulBilou
Depuis hier je travaille sur les transactions et je découvre COMMIT.
Et maintenant, tenez-vous bien ! Si je sors sans me déconnecter les données ne sont plus mémorisés comme avant !
Or, dans isqlPlus AUTOCOMMIT est toujours sur OFF.
Qui peut m'éclairer sur ce changement d'attitude de la part d'Oracle ?
Sans doute que des esprits facétieux ont pris possession de votre PC !
Ou bien, ce qui est plus probable, vous ne faites pas la même chose dans les deux cas.
Pour rappel, une instruction du LDD commence par valider (COMMIT) automatiquement les éventuels ordres du LMD précédents.
Donc si vous faites par exemple des INSERT, sans COMMIT, puis un CREATE TABLE, vos insertions seront validées automatiquement avant que le CREATE TABLE ne s'exécute.
Citation:
Envoyé par PaulBilou
Question subsidiaire : existe-t-il un fichier à documenter pour que toutes les sessions soient en AUTOCOMMIT ON ?
Non, un tel comportement ne se définit pas au niveau de la base, mais au niveau de l'outil client, voire au niveau de la couche d'accès.
C'est par exemple dans SQL*Plus, ou au niveau d'une connexion JDBC que vous pourrez activer une validation automatique.
Mais systématiser un AUTOCOMMIT dans une application de production a de grandes chances d'être une très grave erreur. Il faut d'une part laisser le choix à l'utilisateur de confirmer ou d'annuler ses manipulations, et d'autre part, garantir, en tant que programmeur, qu'on ne peut pas laisser une opération à moitié terminée, et donc incohérente.
L'exemple traditionnel étant le virement bancaire : il serait malvenu de ne faire que le débit sur le compte initial sans faire le crédit sur le compte destinataire.
Gérer les transactions, c'est justement identifier les opérations "qui vont ensemble", et qui provoquent une incohérence si elles ne sont pas exécutées de bout en bout.