Pregunta

¿Cuál es el equivalente a las siguientes declaraciones de SQL Server en DB2?

  • Comenzar la transacción
  • Confirmar transacción
  • Transacción de reversión
¿Fue útil?

Solución

Consulte aquí para ver un ejemplo. Pero básicamente

BEGIN TRANSACTION
COMMIT TRANSACTION
ROLLBACK

Otros consejos

La respuesta es en realidad un poco más complicada que la indicada aquí. Es cierto que las transacciones están estandarizadas por ANSI y DB2 puede admitirlas.

DB2 para z / OS puede ser una bestia muy diferente de las otras variantes (LUW, Linux-Unix-Windows, siendo las más comunes). A riesgo de deslizarse en una perorata, esto hace que la idea de hablar de DB2 sea casi inútil. Está hablando de una variante específica de la base de datos de IBM, pero lo que funciona en una puede ser completamente inválido en otra. Asumiré que cualquiera que sea el sabor que utilizaba el OP no era el z / OS, ya que se aceptó la respuesta BEGIN TRANSACTION .

Para aquellos de ustedes que se topan con esto al tratar de usar transacciones con DB2 z / OS, aquí está el resumen: DB2 para el mainframe no tiene transacciones explícitas. No hay BEGIN TRANSACTION o cualquier otra construcción comparable. Las transacciones se inician de forma implícita (generalmente conocida como una unidad de trabajo en los documentos) y se confirman o se deshacen explícitamente (por lo general, muchas herramientas de GUI, como Toad, tienen una función de confirmación automática que puede sorprenderte de vez en cuando).

En el manual de referencia de SQL de z / OS 9.1 (página 28; disponible en http: //www-01.ibm.com/support/docview.wss?uid=swg27011656#manuals ):

" Se inicia una unidad de trabajo cuando se inicia un proceso de solicitud. Una unidad de trabajo también se inicia cuando la unidad de trabajo anterior finaliza con algo diferente a El final del proceso de solicitud. Una unidad de trabajo finaliza con una operación de confirmación, una operación de reversión completa o el final de un proceso de solicitud. Un commit o rollback la operación afecta solo a los cambios en la base de datos realizados dentro de la unidad de trabajo que finaliza. "

Lo más cercano que obtienes al escribir scripts es especificar manualmente un punto de salvaguarda.

Estos se ven así:

 SAVEPOINT A ON ROLLBACK RETAIN CURSORS;

 UPDATE MYTABLE SET MYCOL = 'VAL' WHERE 1;

 ROLLBACK WORK TO SAVEPOINT A;

Superficialmente, estas se parecen a transacciones explícitas, pero no lo son. En cambio, realmente son solo puntos en el tiempo dentro de una sola transacción implícita. Para muchos propósitos, pueden ser suficientes, pero es importante estar al tanto de las diferencias conceptuales.

 ingrese la descripción de la imagen aquí Si usa un IDE como Intellij Idea (u otros), entonces no tiene la posibilidad de iniciar explícitamente una transacción. En otras palabras, no puede escribir 'comenzar transacción' en la consola de su IDE.

Pero puede deshabilitar 'Auto-commit' (y volver a habilitarlo más tarde) y luego escribir 'commit' o " rollback 'en la consola.

En IDEA también hay un botón para "confirmar" y un botón para "restaurar". Eche un vistazo al volcado de pantalla adjunto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top