Una transacción
Una transacción consta, principalmente, de las siguientes acciones:
–
Asignar una dirección a la tabla (fichero), seleccionar líneas y
transferir en el Result-set.
–
Leer, modificar líneas del Result-set y/o añadir nuevas líneas.
–
Finalizar las introducciones. En modificaciones/adiciones se
aceptan las líneas desde el Result-set en la tabla (fichero).
Sin embargo, también se necesitan más acciones para que las
entradas de la tabla en el programa NC puedan ser procesadas y evitar
una modificación paralela de las mismas líneas de la tabla. De ello
resulta el siguiente desarrollo de una transacción:
1 Para cada columna que deba procesarse, se especifica un
parámetro Q. El parámetro Q se asigna a la columna – se crea un
"enlace" (SQL BIND...).
2 Asignar una dirección a la tabla (fichero), seleccionar líneas y
transferir en el Result-set. Adicionalmente se definen, qué
columnas deben ser aceptadas en el Result-set (SQL SELECT...).
Se pueden "bloquear" las líneas seleccionadas. Entonces otros
procesos pueden tener acceso a esas líneas en modo lectura, pero
no pueden modificar las entradas de la tabla. Por ello siempre
deben bloquearse las líneas seleccionadas al realizar
modificaciones (SQL SELECT ... FOR UPDATE).
3 Leer, modificar líneas del Result-set y/o añadir nuevas líneas:
– Aceptar una línea del Result-set en los parámetros Q del
programa NC (SQL FETCH...)
– Preparar las modificaciones en los parámetros Q y transferir en
una línea el Result-set (SQL UPDATE...)
– Preparar una nueva línea de tabla en los parámetros Q y
trasmitirla como nueva línea en el Result-set (SQL INSERT...)
–4 Finalizar la transacción.
– Se han modificado/añadido entradas en la tabla: los datos se
aceptan desde el Result-set en la tabla (fichero). Ahora están
memorizadas en el fichero. Se desactivan eventuales bloqueos, se
libera el Result-set (SQL COMMIT...).
– No se han modificado/añadido entradas en la tabla (sólo accesos
en modo lectura): se desactivan eventuales bloqueos, se libera el
Result-set (SQL ROLLBACK... SIN ÍNDICE).
Se pueden ejecutar varias transacciones paralelamente.
Cerrar sin falta una transacción iniciada – incluso al utilizar
exclusivamente accesos en modo lectura. Solamente así
se garantiza que las modificaciones/adiciones no se
perderán, que los bloqueos se desactivarán y que el
Result-set se liberará.
TNC 320 de HEIDENHAIN
347