En este ejemplo, probado en Oracle 10, tenemos dos savepoints con el mismo nombre:
SQL> create table nombres
2 (nombre1 varchar2(10))
3 /
Tabla creada.
SQL> insert into nombres values ('Andrew')
2 /
1 fila creada.
SQL> select * from nombres
2 /
NOMBRE1
----------
Andrew
SQL>
2 (nombre1 varchar2(10))
3 /
Tabla creada.
SQL> insert into nombres values ('Andrew')
2 /
1 fila creada.
SQL> select * from nombres
2 /
NOMBRE1
----------
Andrew
SQL>
Aquí creamos el primer savepoint, lo cual se llama sp1:
SQL> savepoint sp1
2 /
Punto de grabacion creado.
SQL> update nombres set nombre1 = 'Brian'
2 /
1 fila actualizada.
SQL> select * from nombres
2 /
NOMBRE1
----------
Brian
SQL>
2 /
Punto de grabacion creado.
SQL> update nombres set nombre1 = 'Brian'
2 /
1 fila actualizada.
SQL> select * from nombres
2 /
NOMBRE1
----------
Brian
SQL>
Y aquí creamos el segundo (con el mismo nombre):
SQL> savepoint sp1
2 /
Punto de grabacion creado.
SQL> update nombres set nombre1 = 'Colin'
2 /
1 fila actualizada.
SQL> select * from nombres
2 /
NOMBRE1
----------
Colin
SQL>
2 /
Punto de grabacion creado.
SQL> update nombres set nombre1 = 'Colin'
2 /
1 fila actualizada.
SQL> select * from nombres
2 /
NOMBRE1
----------
Colin
SQL>
Hacemos un rollback al savepoint:
SQL> rollback to savepoint sp1
2 /
Rollback terminado.
SQL>
2 /
Rollback terminado.
SQL>
Es el último savepoint que funciona y por eso el nombre que tenemos ahora es Brian:
SQL> select * from nombres
2 /
NOMBRE1
----------
Brian
SQL>
No hay comentarios:
Publicar un comentario