Question

Quel est l'équivalent des instructions SQL Server suivantes dans DB2?

  • Commencer la transaction
  • Valider la transaction
  • transaction d'annulation
Était-ce utile?

La solution

Voir ici pour un exemple. Mais fondamentalement

BEGIN TRANSACTION
COMMIT TRANSACTION
ROLLBACK

Autres conseils

La réponse est en réalité un peu plus compliquée que celle indiquée ici. Certes, les transactions sont normalisées ANSI et DB2 peut les prendre en charge.

DB2 pour z / OS peut être une bête très différente des autres variantes (LUW, Linux-Unix-Windows, étant la plus courante). Au risque de sombrer dans un déluge, l’idée de parler de DB2 devient alors presque inutile. Vous parlez d'une variante spécifique de la base de données IBM, mais ce qui fonctionne dans l'une peut être totalement invalide dans une autre. Je supposerai que la solution utilisée par l'OP n'était pas celle de z / OS, car la réponse BEGIN TRANSACTION a été acceptée.

Pour ceux d'entre vous qui tombons dans cette tentative d'essayer d'utiliser des transactions avec DB2 z / OS, voici le résumé: DB2 pour le grand système n'a pas de transaction explicite. Il n'y a pas de BEGIN TRANSACTION ou de toute autre construction comparable. Les transactions sont commencées implicitement (généralement désignées comme une unité de travail dans la documentation) et validées ou annulées explicitement (généralement - de nombreux outils graphiques, tels que Toad, ont une fonctionnalité d’auto-validation qui vous permet de vous faufiler de temps en temps).

D'après le manuel de référence 9.1 z / OS SQL (page 28; disponible à l'adresse http: //www-01.ibm.com/support/docview.wss?uid=swg27011656#manuals ):

"Une unité de travail est lancée quand un processus d'application est lancé. Une unité de travail est également initié lorsque l'unité de travail précédente est terminée par autre chose que la fin du processus de demande. Une unité de travail se termine par une opération de validation, une opération de restauration complète ou la fin d'un processus d'application. Un commit ou une annulation L’opération n’affecte que les modifications apportées à la base de données dans l’unité de travail à laquelle elle se termine. "

La chose la plus proche que vous obtenez lorsque vous écrivez des scripts est de spécifier manuellement un point de sauvegarde.

Celles-ci ressemblent à ceci:

 SAVEPOINT A ON ROLLBACK RETAIN CURSORS;

 UPDATE MYTABLE SET MYCOL = 'VAL' WHERE 1;

 ROLLBACK WORK TO SAVEPOINT A;

À première vue, ces opérations ressemblent à des transactions explicites, mais elles ne le sont pas. Au lieu de cela, ils ne sont en réalité que des points dans le temps au sein d’une seule transaction implicite. Pour de nombreuses raisons, elles peuvent suffire, mais il est important de prendre en compte les différences conceptuelles.

 entrer la description de l'image ici Si vous utilisez un environnement de développement intégré tel qu'Intellij Idea (ou autre), vous n'avez pas la possibilité de lancer explicitement une transaction. En d'autres termes, vous ne pouvez pas taper 'begin transaction' dans la console de votre IDE.

Mais vous pouvez désactiver "Auto-commit" (et le réactiver ultérieurement), puis taper "commit" ou "rollback" dans la console.

Dans IDEA, il y a aussi un bouton pour "commettre" et un bouton pour "annuler". Jetez un coup d’œil à la copie d’écran jointe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top