Transactions


COMMIT

It makes permanent all changes to a table through the use of an INSERT, UPDATE, or DELETE operation.
Este comando hace permanentes los cambios hechos a una tabla al usar INSERT, UPDATE o DELETE.

Transaction

A transaction is a process that requires several steps to complete and each step modifies the database (UPDATE, DELETE, INSERT). A transaction begins with the BEGIN TRANSACTION command, and may end in two ways: successfully or failed; as shown in the figure below.
  • When all the steps of the transaction are successfully executed the COMMIT command in Oracle (in Microsoft SQL Server use COMMIT TRANSACTION) is executed at the end to make all changes permanent.
  • When one step fails, the ROLLBACK command in Oracle (in Microsoft SQL Server use ROLLBACK TRANSACTION) must be executed to undo all the previous steps of the transaction

Es un procedimiento que requiere varios pasos para completarse y cada paso modifica la base de datos (UPDATE, DELETE, INSERT). Una transacción comienza con el comando BEGIN TRANSACTION, y puede terminar de dos formas: con éxito o con fallas; como se muestra en la figura de abajo.
  • Cuando todos los pasos en la transacción se ejecutan en forma exitosa se usa el comando COMMIT en Oracle (en Microsoft SQL Server use COMMIT TRANSACTION) para terminar la transacción haciendo todos los cambios permanentes.
  • Cuando algún paso en la transacción falla se debe usar el comando ROLLBACK en Oracle (en Microsoft SQL Server use ROLLBACK TRANSACTION) para deshacer todos los pasos anteriores de la transacción.

transaction

ROLLBACK

It cancels all the intermediates changes made to a table when these changes have not been committed. For instance, suppose that a user has performed several changes to a table without using the COMMIT command, and suddenly he realizes that he has made a mistake. In this moment, he can use the ROLLBACK command in Oracle to undo all the changes he had made (this include all changes.) You can say that ROLLBACK is the same as going back to a Restore Point in Microsoft Windows.
Este comando cancela todos los cambios hechos a una tabla desde la última vez que se ejecuto el comando COMMIT. Por ejemplo, suponga que un usuario ha hecho varios cambios a una tabla sin usar el comando COMMIT y de repente se da cuenta que ha cometido un error. En ese momento, el puede usar el comando ROLLBACK para deshacer todos los cambios que había hecho (estos cambios incluyen los cambios que eran correctos.) Usted puede decir que un ROLLBACK es lo mismo que regresar a un Punto de Restauración en Microsoft Windows.

Tip
All changes made to the rows of a table are stored in a database buffer or working storage area in main memory. If the user making changes to a table is working in a multi-user environment and this table is shared by other users, no changes made to the table will be accessible to the other user unless the person making the changes issues a COMMIT command. When the user commits the changes, the modified rows are written to the database files and the locks on all affected rows are released. These locks in the data can be eliminated using COMMIT or ROLLBACK.
Todas las modificaciones a los renglones de una tabla se realizan en un buffer datos o en un área de memoria de trabajo. Si el usuario hace estos cambios en una base de datos multi-usuario, ningún cambio será mostrado a los otros usuarios hasta que éste ejecute el comando COMMIT. Una vez que el usuario ejecuta el comando COMMIT las modificaciones solicitadas por el usuario son hechas en forma permanente y cualquier candado en la base de datos afectando estos renglones es liberado. Estos candados en los datos pueden ser eliminados por el comando COMMIT o bien por el comando ROLLBACK.

Tip
Any DDL command (such as CREATE TABLE or DROP TABLE) implicitly commits any unsaved data before executing the command's stated function. Logging out of Oracle (or simply closing SQL*Plus) will automatically commit your changes.
Cualquier comando del tipo DDL (tal como CREATE TABLE o DROP TABLE) implícitamente realiza una llamada al comando COMMIT guardando los cambios en forma inmediata. Por otro lado, cuando uno se desconecta de una base de datos, el programa cliente siempre realizará una llamada al comando COMMIT automáticamente.

SAVEPOINT

It identifies a point in the transaction to which we can go back to, provided that the transaction has not been committed. SAVEPOINT allows you to undo only a part of the current transaction by allowing to go back to a particular point in time.
Este permite guardar un punto en una transacción al cual se puede regresar siempre y cuando no se haya ejecutado el comando COMMIT. SAVEPOINT permite deshacer una parte de la transacción, ya que es posible regresar a éstos en un momento dado.

Problem 1
Discuss the code below that shows how to use ROLLBACK.
Discuta el código de abajo que muestra cómo usar ROLLBACK.

rollback

Problem 2
city_bank> Test the following SQL command in Microsoft SQL Server.
Pruebe el comando de SQL en Microsoft SQL Server.

SQL
SELECT name, address, ssn
FROM friend;

cb_friend

Problem 3
city_bank> Test the following SQL command in Microsoft SQL Server.
Pruebe el comando de SQL en Microsoft SQL Server.

SQL
USE city_bank;
BEGIN TRANSACTION;
INSERT INTO friend (friend_id, name, address, birthdate, ssn)
VALUES (5635, 'Contreras, Marco', 'Hidalgo 50', '1990-03-29', '123-45-7788');
GO
SELECT name, address, ssn
FROM friend;
ROLLBACK;


Problem 4
city_bank> Test the following SQL command in Microsoft SQL Server, note that the table remains the same.
Pruebe el comando de SQL en Microsoft SQL Server, observe que la tabla permanece igual.

SQL
SELECT name, address, ssn
FROM friend;

cb_friend2

Problem 5
Discuss the code below that shows how to use SAVEPOINT in Oracle.
Discuta el código de abajo que muestra cómo usar SAVEPOINT en Oracle.

savepoint

Problem 6
Indicate whether the following statement is true or false: COMMIT must be used as frequently as possible to avoid locks in the tables and keep a good performance in the database.
Diga si lo siguiente es verdadero o falso: El comando COMMIT debe usarse tan frecuentemente cómo sea posible para evitar los candados en las tablas y mantener un buen desempeño en la base de datos.

Problem 7
Indicate whether the following statement is true or false: When you begin an important task of several steps, you must use COMMIT after completing each step.
Diga si lo siguiente es verdadero o falso: Cuando inicie una tarea importante de varios pasos, usted debe usar el comando COMMIT al final de cada paso.

Tip
In order to keep the performance of the database:
  • Try to use COMMIT as frequently as possible
  • Use SAVEPOINT as frequently as possible (but only when it is really neccesary)
  • Use ROLLBACK only when it is really neccesary

A fin de mantener un buen desempeño en la base de datos:
  • Trate de usar lo más que pueda el comando COMMIT
  • Use SAVEPOINT tan frecuente como sea posible (pero solamente cuando realmente sea necesario)
  • Use ROLLBACK solamente cuando sea realmente necesario

Problem 8
Indicate whether BEGIN TRANSACTION is necessary when all the following steps must be executed:
  • Step 1: INSERT in table A
  • Step 2: DELETE in table B

Diga si BEGIN TRANSACTION es necesario cuando todos los pasos siguientes deben ser ejecutados:
  • Paso 1: INSERT en la tabla A
  • Paso 2: DELETE en la tabla B

Problem 9
Indicate whether BEGIN TRANSACTION is necessary when all the following steps must be executed:
  • Step 1: SELECT in table A
  • Step 2: DELETE in table B

Diga si BEGIN TRANSACTION es necesario cuando todos los pasos siguientes deben ser ejecutados:
  • Paso 1: SELECT en la tabla A
  • Paso 2: DELETE en la tabla B

Problem 10
Indicate whether BEGIN TRANSACTION is necessary when all the following steps must be executed:
  • Step 1: UPDATE in table A

Diga si BEGIN TRANSACTION es necesario cuando todos los pasos siguientes deben ser ejecutados:
  • Paso 1: UPDATE en la tabla A

Problem 11
Indicate whether BEGIN TRANSACTION is necessary when all the following steps must be executed:
  • Step 1: INSERT in table A
  • Step 2: DELETE in table A
  • Step 3: DELETE in table B

Diga si BEGIN TRANSACTION es necesario cuando todos los pasos siguientes deben ser ejecutados:
  • Paso 1: INSERT en la tabla A
  • Paso 2: DELETE en la tabla A
  • Paso 3: DELETE en la tabla B

Problem 12
Indicate whether BEGIN TRANSACTION is necessary when all the following steps must be executed:
  • Step 1: INSERT in table A
  • Step 2: SELECT in table B
  • Step 3: DELETE in table C

Diga si BEGIN TRANSACTION es necesario cuando todos los pasos siguientes deben ser ejecutados:
  • Paso 1: INSERT en la tabla A
  • Paso 2: SELECT en la tabla B
  • Paso 3: DELETE en la tabla C

Problem 13
Indicate whether BEGIN TRANSACTION is necessary when all the following steps must be executed:
  • Step 1: SELECT in table A
  • Step 2: SELECT in table B
  • Step 3: SELECT in table C

Diga si BEGIN TRANSACTION es necesario cuando todos los pasos siguientes deben ser ejecutados:
  • Paso 1: SELECT en la tabla A
  • Paso 2: SELECT en la tabla B
  • Paso 3: SELECT en la tabla C

© Copyright 2000-2021 Wintempla selo. All Rights Reserved. Jul 22 2021. Home