PROGRAMA ACADÉMICO DE TECNOLOGÍAS DE LA INFORMACIÓN. Actividad Tutorial de comandos para transacciones

ARIA, FOR SIT TA L U C O IZ S EXC ELENCI MEX ICO DE A A UN ER EZ IV AR D E M A TA M O R PROGRAMA ACADÉMICO DE TECNOLOGÍAS DE LA INF

0 downloads 10 Views 325KB Size

Recommend Stories


Programa 6 Sistema de Acción Tutorial
Programa 6. Sistema de Acción Tutorial Programa 6 Sistema de Acción Tutorial La exigencia de un nuevo profesional, más competente, marcadamente euro

COMANDOS DE ACCESO DIRECTO
COMANDOS DE ACCESO DIRECTO TABLA DE CONTENIDO Extensiones no involucradas en llamadas activas ........................................................

Guia de Comandos de Clipper
Pagina 1 de 54 Guia de Comandos de Clipper Guia de Comandos de Clipper TITULO: TEXTO: ?/?? ?/?? ---Muestra por pantalla o impresora (dependiendo de

Story Transcript

ARIA, FOR SIT TA L

U

C

O

IZ

S

EXC

ELENCI

MEX ICO DE

A

A

UN

ER

EZ

IV

AR

D E M A TA M

O

R

PROGRAMA ACADÉMICO DE TECNOLOGÍAS DE LA INFORMACIÓN

Actividad Tutorial de comandos para transacciones

Como requerimiento parcial para Acreditar la asignatura de

Base de Datos para Aplicaciones

Que presentan:

Alumno

No. Control

Marlizeth Caamaño Gutiérrez

TI102931

Juan Pablo Gamboa Pacheco

TI102937

Azucena Vivar Pallares

TI102916

Obdulia García Tecalero

TI102925

Asesor Lic. Gonzalo Rosas Cabrera

Izúcar de Matamoros, Pué., 21 de febrero de 2011

1 RESUMEN Las transacciones aportan una fiabilidad superior a las bases de datos. Si disponemos de una serie de consultas SQL que deben ejecutarse en conjunto, con el uso de transacciones podemos tener la certeza de que nunca nos quedaremos a medio camino de su ejecución. De hecho, podríamos decir que las transacciones aportan una característica de "deshacer" a las aplicaciones de bases de datos.

2 DESARROLLO Definición El concepto transacción proporciona un mecanismo para describir las unidades lógicas del procesamiento de una base de datos. Los sistemas de procesamiento de transacciones son sistemas con grandes base de datos y cientos de usuarios concurrentes que están ejecutando transacciones de crédito, mercado de valores, cajas de supermercados y otros sistemas similares. Estos sistemas requieren una alta disponibilidad y buen tiempo de repuesta para cientos de usuarios concurrentes.

Estados de transacciones y operaciones Una transacción es una unidad atómica de trabajo que se realiza por completo o bien no se efectúa en absoluto. Para fines de recuperación el sistema necesita mantenerse al tanto de cuando la transacción se inicia, termina y se confirma o aborta. Así pues, el gestor de recuperación se mantiene al tanto de las siguientes operaciones:

BEGIN_TRANSACTION (Inicio_de_transacción): Esta marca el principio de la ejecución de la transacción.

READ (leer) o WRITE (escribir): Éstas especifican operaciones de lectura o escritura de elementos de la base de datos que se ejecutan como parte de la transacción.

END_TRANSACTION (fin_de_transacción): Ésta especifica que las operaciones de LEER o ESCRIBIR de la transacción han terminado y marca el fin de la ejecución de la transacción.

COMMIT_TRANSACTION (confirmar_transacción): Ésta señala que la transacción terminó con éxito y que cualquier cambio (actualizaciones) ejecutado por ella se puede confirmar sin peligro en la base de datos y que no se deshará.

ROLLBACK (restaurar) o ABORT (abortar): Éstas señales indican que la transacción termino sin éxito y que cualquier cambio o efecto que pueda haberse aplicado a la base de datos se debe deshacer.

Iniciar transacciones Puede iniciar las transacciones del Database Engine (Motor de base de datos) de SQL Server como explícita o de confirmación automática.  Inicie

Transacciones explícitas explícitamente

una

transacción

ejecutando

una

instrucción

BEGIN

TRANSACTION. 

Transacciones auto confirmadas

Se trata del modo predeterminado en SQL Server Compact Edition. Una transacción auto confirmado se inicia cuando se inicia la instrucción de la operación y se confirma cuando finaliza la instrucción.

Finalizar transacciones Puede finalizar las transacciones con una instrucción COMMIT o ROLLBACK. 

COMMIT

Una instrucción COMMIT garantiza que todas las modificaciones de la transacción se convierten en una parte permanente de la base de datos. Una instrucción COMMITtambién libera recursos utilizados por la transacción, por ejemplo bloqueos. 

ROLLBACK

Si se produce un error en una transacción, o bien si el usuario decide cancelar la transacción, una instrucción ROLLBACK deshace la transacción. Una instrucción ROLLBACK deshace todas las modificaciones realizadas en la transacción devolviendo los datos al estado en el que se encontraban al iniciar la transacción. Una instrucción ROLLBACKtambién libera algunos recursos retenidos por la transacción.

Ordenar los registros Adicionalmente se puede especificar el orden en que se desean recuperar los registros de las tablas mediante la claúsula ORDER BY Lista de Campos. En donde Lista de campos representa los campos a ordenar. Ejemplo: 

SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY Nombre;

Esta consulta devuelve los campos CodigoPostal, Nombre, Telefono de la tabla Clientes ordenados por el campo Nombre. Se pueden ordenar los registros por mas de un campo, como por ejemplo: 

SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY CodigoPostal, Nombre;

Incluso se puede especificar el orden de los registros: ascendente mediante la claúsula (ASC -se toma este valor por defecto) ó descendente (DESC) 

SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY CodigoPostal DESC , Nombre ASC;

Consultas con Predicado El predicado se incluye entre la cláusula y el primer nombre del campo a recuperar, los posibles predicados son: Predicado

Descripción

ALL TOP

Devuelve todos los campos de la tabla Devuelve un determinado número de registros de la tabla Omite los registros cuyos campos seleccionados coincidan totalmente Omite los registros duplicados basándose en la totalidad del registro y no sólo en los campos seleccionados.

DISTINCT DISTINCTROW

ALL Si no se incluye ninguno de los predicados se asume ALL. El Motor de base de datos selecciona todos los registros que cumplen las condiciones de la instrucción SQL. No se conveniente abusar de este predicado ya que obligamos al motor de la base de datos a analizar la estructura de la tabla para averiguar los campos que contiene, es mucho más rápido indicar el listado de campos deseados. SELECT ALL FROM Empleados; SELECT * FROM Empleados; TOP Devuelve un cierto número de registros que entran entre al principio o al final de un rango especificado por una cláusula ORDER BY. Supongamos que queremos recuperar los nombres de los 25 primeros estudiantes del curso 1994: SELECT TOP 25 Nombre, Apellido FROM Estudiantes ORDER BY Nota DESC; Si no se incluye la cláusula ORDER BY, la consulta devolverá un conjunto arbitrario de 25 registros de la tabla Estudiantes .El predicado TOP no elige entre valores iguales. En el ejemplo anterior, si la nota media número 25 y la 26 son iguales, la consulta devolverá 26 registros. Se puede utilizar la palabra reservada PERCENT para devolver un cierto porcentaje de registros que caen al principio o al final de un rango especificado por la cláusula ORDER BY. Supongamos que en lugar de los 25 primeros estudiantes deseamos el 10 por ciento del curso: SELECT TOP 10 PERCENT Nombre, Apellido FROM Estudiantes ORDER BY Nota DESC; El valor que va a continuación de TOP debe ser un Integer sin signo.TOP no afecta a la posible actualización de la consulta. DISTINCT Omite los registros que contienen datos duplicados en los campos seleccionados. Para que los valores de cada campo listado en la instrucción SELECT se incluyan en la consulta deben ser únicos. Por ejemplo, varios empleados listados en la tabla Empleados pueden tener el mismo apellido. Si dos registros contienen López en el campo Apellido, la siguiente instrucción SQL devuelve un único registro: SELECT DISTINCT Apellido FROM Empleados; Con otras palabras el predicado DISTINCT devuelve aquellos registros cuyos campos indicados en la cláusula SELECT posean un contenido diferente. El resultado de una consulta que utiliza DISTINCT no es actualizable y no refleja los cambios subsiguientes realizados por otros usuarios.

DISTINCTROW Devuelve los registros diferentes de una tabla; a diferencia del predicado anterior que sólo se fijaba en el contenido de los campos seleccionados, éste lo hace en el contenido del registro completo independientemente del campo indicado en la cláusula SELECT. SELECT DISTINCTROW Apellido FROM Empleados; Si la tabla empleados contiene dos registros: Antonio López y Marta López el ejemplo del predicado DISTINCT devuleve un único registro con el valor López en el campo Apellido ya que busca no duplicados en dicho campo. Este último ejemplo devuelve dos registros con el valor López en el apellido ya que se buscan no duplicados en el registro completo. Alias En determinadas circunstancias es necesario asignar un nombre a alguna columna determinada de un conjunto devuelto, otras veces por simple capricho o por otras circunstancias. Para resolver todas ellas tenemos la palabra reservada AS que se encarga de asignar el nombre que deseamos a la columna deseada. Tomado como referencia el ejemplo anterior podemos hacer que la columna devuelta por la consulta, en lugar de llamarse apellido (igual que el campo devuelto) se llame Empleado. En este caso procederíamos de la siguiente forma: SELECT DISTINCTROW Apellido AS Empleado FROM Empleados; Recuperar Información de una base de Datos Externa Para concluir este capítulo se debe hacer referencia a la recuperación de registros de bases de datos externa. Es ocasiones es necesario la recuperación de información que se encuentra contenida en una tabla que no se encuentra en la base de datos que ejecutará la consulta o que en ese momento no se encuentra abierta, esta situación la podemos salvar con la palabra reservada IN de la siguiente forma: SELECT DISTINCTROW Apellido AS Empleado FROM Empleados IN 'c:\databases\gestion.mdb'; En donde c:\databases\gestion.mdb es la base de datos que contiene la tabla Empleados.

Ejemplo 1 Veremos un ejemplo completo, extraído del articulo fuente de esta publicación, donde utilizaremos START TRANSACTION (no es necesario AUTOCOMMIT en 0) CREATE TABLE `departamentos` ( `CODIGO` INTEGER (11) NOT NULL DEFAULT ’0′,

`NOMBRE` VARCHAR (100), `PRESUPUESTO` INTEGER (11) DEFAULT NULL, PRIMARY KEY (`CODIGO`) ) ENGINE=InnoDB

Ahora, insertaremos registros de la tabla departamentos_externos a departamentos mediante una transacción: START TRANSACTION; SELECT @A:= presupuesto FROM departamentos_externos WHERE codigo =11; INSERT INTO departamentos(codigo, nombre, presupuesto) VALUES ( 11, ‘Department test’, @A ); COMMIT;

Ejemplo 2 mysql> create table tabla (name char(20), unique(name)) engine = InnoDB; Query OK, 0 rows affected (0.01 sec) mysql> insert into tabla set name = 'primero'; Query OK, 1 row affected (0.01 sec) mysql> insert into tabla set name = 'segundo'; Query OK, 1 row affected (0.01 sec) mysql> start transaction; Query OK, 0 rows affected (0.00 sec)

mysql> insert into tabla set name = 'tercero'; Query OK, 1 row affected (0.00 sec) mysql> select * from tabla; +---------+ | name

|

+---------+ | primero | | segundo | | tercero | +---------+ 3 rows in set (0.00 sec) mysql> insert into tabla set name = 'segundo'; ERROR 1062 (23000): Duplicate entry 'segundo' for key 1 mysql> rollback; Query OK, 0 rows affected (0.01 sec) mysql> select * from tabla; +---------+ | name

|

+---------+ | primero | | segundo | +---------+ 2 rows in set (0.00 sec)

Ejemplo 3 UPDATE tablename SET pay_back=pay_back+125;

UPDATE customer SET customer_date='current_date', address='new address', phone='new phone', money_owed_to_us=money_owed_to_us-125 WHERE customer_id=id AND address='old address' AND phone='old phone';

3 CONCLUSIONES Y RECOMENDACIONES

La transacción más simple en SQL Server es una única sentencia SQL. Por ejemplo una sentencia como esta: UPDATE Products SET UnitPrice=20 WHERE ProductName ='Chai'

Es una transacción. (Como siempre ejemplos de Northwind) Esta es una transacción 'autocommit', una transacción autocompletada. Cuando enviamos esta sentencia al SQL Server se escribe en el fichero de transacciones lo que va a ocurrir y a continuación realiza los cambios necesarios en la base de datos. Si hay algún tipo de problema al hacer esta operación el SQL Server puede leer en el fichero de transacciones lo que se estaba haciendo y si es necesario puede devolver la base de datos al estado en el que se encontraba antes de recibir la sentencia.

Por supuesto este tipo de transacciones no requieren de nuestra intervención puesto que el sistema se encarga de todo. Sin embargo si hay que realizar varias operaciones y queremos que sean tratadas como una unidad tenemos que crear esas transacciones de manera explícita.

Una transacción es un conjunto de operaciones tratadas como una sola. Este conjunto de operaciones debe marcarse como transacción para que todas las operaciones que la conforman tengan éxito o todas fracasen.

¡ERROR! NO SE ENCUENTRA EL ORIGEN DE LA REFERENCIA. Corporation, M. (2009). Libros en pantalla de SQL Server 2008. Microsoft. Elmasri, R. (2004). Fundamentos de Sistemas de Base de Datos. Madrid: Person Addison Wesley.

ELMASRI, R. (2004). FUNDAMENTOS DE SISTEMAS DE BASE DE DATOS. MADRID: PERSON ADDISON WESLEY.

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.