Sei sulla pagina 1di 22

Para iniciar comenzaremos utilizando la consola de SQL Plus que se encuentra dentro de las carpetas de Oracle en el men inicio.

Mediante esta consola podemos comenzar a realizara las tareas para crear tablas, consultas SQL, etc.

Luego debemos indicar el nombre de usuario, clave y el nombre de la base de datos ORACLE a la que queremos acceder en este caso la base de datos se llama BDGLOBAL. Por defecto el usuario con mximos privilegios es SYSTEM y su clave es manager

De esta manera accedemos a la base de datos y nos aparece una ventana como la siguiente

BASE DE DATOS ORACLE 9i Rodrigo I. Pedrero Cdiz Ingeniero en Informtica

CREACION DE TABLAS, crearemos dos tablas

Mostrar contenido de la tabla

Cambiar el nombre a una tabla, la orden RENAME permite cambiar de nombre a cualquier objeto.

Eliminar una tabla.

BASE DE DATOS ORACLE 9i Rodrigo I. Pedrero Cdiz Ingeniero en Informtica

Mostrar tablas

MODIFICAR UNA TABLA Agregar nuevos campos o columnas a una tabla. Al agregar nuevos campos o columnas estos quedan al final y no se pude determinar la posicin en la que quedaran.

Eliminar campos a una tabla.

Modificar un campo. Permite cambiar el tipo de datos y propiedades de un determinado campo o columna.

BASE DE DATOS ORACLE 9i Rodrigo I. Pedrero Cdiz Ingeniero en Informtica

CREACION DE RELACIONES ENTRE TABLAS.


La integridad referencial es una herramienta imprescindible de las bases de datos relacionales. Pero provoca varios problemas. Por ejemplo, si borramos un registro en la tabla principal que est relacionado con uno o varios de la secundaria ocurrir un error, ya que de permitrsenos borrar el registro ocurrir fallo de integridad (habr claves secundarios refirindose a una clave principal que ya no existe). Por ello Oracle nos ofrece dos soluciones a aadir tras la clusula REFERENCES: ON DELETE SET NULL. Coloca nulos todas las claves secundarias relacionadas con la borrada. ON DELETE CASCADE. Borra todos los registros cuya clave secundaria es igual que la clave del registro borrado. Si no se indica esta clusula, no se permite el borrado de registros relacionados. El otro problema ocurre si se desea cambiar el valor de la clave principal en un registro relacionado con claves secundarias. En muchas bases de datos se implementan soluciones consistentes en aadir ON UPDATE CASCADE o ON UPDATE SET NULL. Oracle no implementa directamente estas soluciones.

Para este ejemplo crearemos dos tablas, (fabricantes y artculos)

Borrar Restricciones, en algunos casos si necesitamos eliminar una relacin entre tablas podemos hacerlo de la siguiente manera, debemos indicar nombre de relacin creada, en este caso relArtFabr

Luego volvemos a crearla para efectos de poder seguir con los ejemplos

BASE DE DATOS ORACLE 9i Rodrigo I. Pedrero Cdiz Ingeniero en Informtica

INSERTAR DATOS EN LAS TABLAS Insertamos los siguientes registros en la tabla fabricantes

insert into fabricantes values(1,'ASUS'); insert into fabricantes values(2,'MSI'); insert into fabricantes values(3,'PALIT'); insert into fabricantes values(4,'GYGABYTE'); insert into fabricantes values(5,'INTEL'); insert into fabricantes values(6,'AMD');

Luego agregamos los siguientes registros a la tabla artculos insert into articulos values(1,'P5QPL-AM Core 2 Quad', 43943, 1); insert into articulos values(2,'G51JX I7-720QM 6GB 500GB 15.6', 990734, 1); insert into articulos values(3,'CuCore EAH5770', 122703, 1); insert into articulos values(4,'ECLIPSE SLI Core i7/ Intel X58', 243493, 1); insert into articulos values(6,'Flash Voyager Mini 4GB', 9945, 2); insert into articulos values(7,'Athlon 64 3500+ Venice 1GHz', 43086, 6); insert into articulos values(8,'Athlon II X2 245 Regor 2.9GHz 2', 43075, 6); insert into articulos values(9,'Athlon II X4 630 Propus 2.8GHz', 71578, 6); insert into articulos values(10,'AMD Phenom II X2 550 Black Edition', 71108, 6); insert into articulos values(11,'Celeron E3300 Wolfdale 2.5GHz', 31201, 5); insert into articulos values(12,'Core i5-670 Clarkdale 3.46GHz', 209476, 5); insert into articulos values(13,'CORE i7 860 Lynnfield 2.8GHz', 207365, 5); insert into articulos values(15,'Notebook 1gb Ram,HD160 Intel Athom', 350000, 5);

BASE DE DATOS ORACLE 9i Rodrigo I. Pedrero Cdiz Ingeniero en Informtica

CONSULTAS SQL ORACLE 9i


1. Obtener los nombres de los productos de la tienda.

Mas consultas
2. Obtener los nombres y los precios de los productos de la tienda.
SELECT Nombre, Precio FROM ARTICULOS;

3.

Obtener el nombre de los productos cuyo precio sea menor o igual a 50000.
SELECT Nombre FROM ARTICULOS WHERE Precio > 50000;

4.

Obtener todos los datos de los artculos cuyo precio est entre los 60000 y los 120000 (ambas cantidades incluidas).
/* Con AND */ SELECT * FROM ARTICULOS WHERE Precio >= 60000 AND Precio <= 120000; /* Con BETWEEN */ SELECT * FROM ARTICULOS WHERE Precio BETWEEN 60000 AND 120000;

5.

Obtener el nombre y el precio en 0.19)


/*Sin AS */ SELECT Nombre,Precio, Precio * 0.19 FROM ARTICULOS; /* Con AS */ SELECT Nombre,Precio, Precio * 0.19 AS IVA FROM ARTICULOS;

6.

Seleccionar el precio medio de todos los productos.


SELECT AVG(Precio) FROM ARTICULOS;

7.

Obtener el precio medio de los artculos cuyo cdigo de fabricante sea 6.


SELECT AVG(Precio) FROM ARTICULOS WHERE Fabricante=6;

BASE DE DATOS ORACLE 9i Rodrigo I. Pedrero Cdiz Ingeniero en Informtica

8.

Obtener el nmero de artculos cuyo precio sea mayor o igual a 180000.

SELECT COUNT(*) FROM ARTICULOS WHERE Precio >= 180000;

9.

Obtener el nombre y precio de los artculos cuyo precio sea mayor o igual a 180000 y ordenarlos descendentemente por precio, y luego ascendentemente por nombre.
SELECT Nombre, Precio FROM ARTICULOS WHERE Precio >= 180000 ORDER BY Precio DESC, Nombre;

10. Obtener un listado completo de artculos, incluyendo por cada artculo los datos del articulo y de su fabricante.
/* Sin INNER JOIN */ SELECT * FROM ARTICULOS, FABRICANTES WHERE ARTICULOS.Fabricante = FABRICANTES.Codigo; /* Con INNER JOIN */ SELECT * FROM ARTICULOS INNER JOIN FABRICANTES ON ARTICULOS.Fabricante = FABRICANTES.Codigo;

11. Obtener un listado de artculos, incluyendo el nombre del artculo, su precio, y el nombre de su fabricante.
/* Sin INNER JOIN */ SELECT ARTICULOS.Nombre, Precio, FABRICANTES.Nombre FROM ARTICULOS, FABRICANTES WHERE ARTICULOS.Fabricante = FABRICANTES.Codigo; /* Con INNER JOIN */ SELECT ARTICULOS.Nombre, Precio, FABRICANTES.Nombre FROM ARTICULOS INNER JOIN FABRICANTES ON ARTICULOS.Fabricante = FABRICANTES.Codigo;

12. Obtener el precio medio de los productos de cada fabricante, mostrando solo los cdigos de fabricante.
SELECT AVG(Precio), Fabricante FROM ARTICULOS GROUP BY Fabricante;

13. Obtener el precio medio de los productos de cada fabricante, mostrando el nombre del fabricante.
/* Sin INNER JOIN */ SELECT AVG(Precio), FABRICANTES.Nombre FROM ARTICULOS, FABRICANTES WHERE ARTICULOS.Fabricante = FABRICANTES.Codigo GROUP BY FABRICANTES.Nombre; /* Con INNER JOIN */ SELECT AVG(Precio), FABRICANTES.Nombre FROM ARTICULOS INNER JOIN FABRICANTES ON ARTICULOS.Fabricante = FABRICANTES.Codigo GROUP BY FABRICANTES.Nombre;

14. Obtener los nombres de los fabricantes que ofrezcan productos cuyo precio medio sea mayor o igual a 150000.
/* Sin INNER JOIN */ SELECT AVG(Precio), FABRICANTES.Nombre FROM ARTICULOS, FABRICANTES WHERE ARTICULOS.Fabricante = FABRICANTES.Codigo GROUP BY FABRICANTES.Nombre HAVING AVG(Precio) >= 150000; /* Con INNER JOIN */ SELECT AVG(Precio), FABRICANTES.Nombre FROM ARTICULOS INNER JOIN FABRICANTES ON ARTICULOS.Fabricante = FABRICANTES.Codigo GROUP BY FABRICANTES.Nombre HAVING AVG(Precio) >= 150000;

BASE DE DATOS ORACLE 9i Rodrigo I. Pedrero Cdiz Ingeniero en Informtica

15. Obtener el nombre y precio del artculo ms barato.


SELECT Nombre, Precio FROM ARTICULOS WHERE Precio = (SELECT MIN(Precio) FROM ARTICULOS) ;

16. Obtener una lista con el nombre y precio de los artculos ms caros de cada proveedor (incluyendo el nombre del proveedor).
/* Sin INNER JOIN */ SELECT A.Nombre, A.Precio, F.Nombre FROM ARTICULOS A, FABRICANTES F WHERE A.Fabricante = F.Codigo AND A.Precio = ( SELECT MAX(A.Precio) FROM ARTICULOS A WHERE A.Fabricante = F.Codigo ); /* Con INNER JOIN */ SELECT A.Nombre, A.Precio, F.Nombre FROM ARTICULOS A INNER JOIN FABRICANTES F ON A.Fabricante = F.Codigo AND A.Precio = ( SELECT MAX(A.Precio) FROM ARTICULOS A WHERE A.Fabricante = F.Codigo );

17. Aadir un nuevo producto: Altavoces , precio 7000 (del fabricante 2)


INSERT INTO ARTICULOS( Codigo, Nombre , Precio , Fabricante) VALUES ( 14, 'Altavoces' , 7000 , 2 ) ;

18. Cambiar el nombre del producto 5 a ' DDR3 TWIN-X 2GB'


UPDATE ARTICULOS SET Nombre = 'DDR3 TWIN-X 2GB' WHERE Codigo = 5;

19. Aplicar un descuento del 10 % (multiplicar el precio por 0.9) a todos los productos.
UPDATE ARTICULOS SET Precio = Precio * 0.9;

20. Aplicar un descuento de 3000 a todos los productos cuyo precio sea mayor o igual a 120000.
UPDATE ARTICULOS SET Precio = Precio - 3000 WHERE Precio >= 120000;

21. Eliminar el producto con cdigo 7


DELETE ARTICULOS WHERE Codigo = 5;

BASE DE DATOS ORACLE 9i Rodrigo I. Pedrero Cdiz Ingeniero en Informtica

PROCEDIMIENTOS DE ALMACENADO EN ORACLE 9i


Un procedimiento almacenado es un conjunto de instrucciones a las que se les da un nombre, se almacena en la base de datos activa. Permiten agrupar y organizar tareas repetitivas. Ventajas: - comparten la lgica de la aplicacin con las otras aplicaciones, con lo cual el acceso y las modificaciones de los datos se hacen en un solo sitio. - permiten realizar todas las operaciones que los usuarios necesitan evitando que tengan acceso directo a las tablas. - reducen el trfico de red; en vez de enviar muchas instrucciones, los usuarios realizan operaciones enviando una nica instruccin, lo cual disminuye el nmero de solicitudes entre el cliente y el servidor. Un procedimiento almacenados puede hacer referencia a objetos que no existen al momento de crearlo. Los objetos deben existir cuando se ejecute el procedimiento almacenado. Al crear un procedimiento almacenado, las instrucciones que contiene se analizan para verificar si son correctas sintcticamente. Si se encuentra algn error, el procedimiento se compila, pero aparece un mensaje "con advertencias" que indica tal situacin. Un procedimiento almacenado se invoca llamndolo. En primer lugar se deben tipear y probar las instrucciones que se incluyen en el procedimiento almacenado, luego, si se obtiene el resultado esperado, se crea el procedimiento. Los procedimientos almacenados pueden hacer referencia a tablas, vistas, a funciones definidas por el usuario, a otros procedimientos almacenados. Un procedimiento almacenado pueden incluir cualquier cantidad y tipo de instrucciones DML (de manipulacin de datos, como insert, update, delete), no instrucciones DDL (de definicin de datos, como create..., drop... alter...). Para crear un procedimiento almacenado empleamos la instruccin "create procedure". La sintaxis bsica parcial es: create or replace procedure NOMBREPROCEDIMIENTO as begin INSTRUCCIONES end;

Eliminar un Procedimiento de Alamacenado. Los procedimientos almacenados se eliminan con "drop procedure". Sintaxis: drop procedure NOMBREPROCEDIMIENTO;

BASE DE DATOS ORACLE 9i Rodrigo I. Pedrero Cdiz Ingeniero en Informtica

Procedimientos Almacenados (crear- ejecutar)


Para comenzar crearemos la siguiente tabla.

Introducimos los siguientes datos. insert into libros values('Uno','Richard Bach','Planeta',15000); insert into libros values('Ilusiones','Richard Bach','Planeta',18000); insert into libros values('El aleph','Borges','Emece',25000); insert into libros values('Aprenda PHP','Mario Molina','Nuevo siglo',45000); insert into libros values('Matematica estas ahi','Paenza','Nuevo siglo',12000); insert into libros values('Java en 10 minutos','Mario Molina','Paidos',35000);

EJERCICIO 1: La librera, frecuentemente, aumenta los precios de los libros en un 10%. Necesitamos un procedimiento almacenado que actualice los precios de los libros aumentndolos en un 10%:

BASE DE DATOS ORACLE 9i Rodrigo I. Pedrero Cdiz Ingeniero en Informtica

Luego llamamos al procedimiento para efectos de ver el cambio realizado.

BASE DE DATOS ORACLE 9i Rodrigo I. Pedrero Cdiz Ingeniero en Informtica

EJERCICIO 2: Una empresa almacena los datos de sus empleados en una tabla llamada "empleados". 1- Creamos la tabla:

2- Ingresamos algunos registros: insert into empleados values('22222222-2','Juan','Perez',200000,2,'10/10/1980'); insert into empleados values('33333333-3','Luis','Lopez',250000,0,'01/02/1990'); insert into empleados values('44444444-4','Marta','Perez',350000,1,'02/05/1995'); insert into empleados values('55555555-5','Susana','Garcia',400000,2,'15/12/2000'); insert into empleados values('66666666-6','Jose Maria','Morales',500000,3,'25/08/2005');

3- Crear un procedimiento almacenado llamado "proc_aumentarsueldo" que aumente los sueldos inferiores al promedio en un 20%. 4- Ejecute el procedimiento creado anteriormente 5- Verifique que los sueldos han aumentado 6- Ejecute el procedimiento nuevamente 7- Verifique que los sueldos han aumentado 8- Cree una tabla "empleados_antiguos"

BASE DE DATOS ORACLE 9i Rodrigo I. Pedrero Cdiz Ingeniero en Informtica

9- Crear un procedimiento de almacenado llamado proc_empleados_antiguos que ingrese en la tabla "empleados_antiguos" el rut, nombre y apellido (concatenados) de todos los empleados de la tabla "empleados" creada anteriormente que ingresaron a la empresa hace ms de 10 aos 10- Ejecute el procedimiento creado anteriormente 11- Verifique que la tabla "empleados_antiguos" ahora tiene registros (3 registros) SOLUCION EJERCICIO 2: Los pasos 1,2 y 8 ya han sido realizados, por tanto nos centraremos a los pasos que no han sido desarrollados. Comenzamos con el punto 3.

BASE DE DATOS ORACLE 9i Rodrigo I. Pedrero Cdiz Ingeniero en Informtica

BASE DE DATOS ORACLE 9i Rodrigo I. Pedrero Cdiz Ingeniero en Informtica

Procedimientos almacenados (parmetros de entrada)


EJERCICIO 3 Los procedimientos almacenados pueden recibir y devolver informacin; para ello se emplean parmetros. Los parmetros de entrada posibilitan pasar informacin a un procedimiento. Para que un procedimiento almacenado admita parmetros de entrada se deben declarar al crearlo. La sintaxis es: create or replace procedure NOMBREPROCEDIMIENTO (PARAMETRO in TIPODEDATO) as begin INSTRUCCIONES; end; Los parmetros se definen luego del nombre del procedimiento. Pueden declararse varios parmetros por procedimiento, se separan por comas. Cuando el procedimiento es ejecutado, deben explicitarse valores para cada uno de los parmetros (en el orden que fueron definidos). Crearemos un procedimiento que reciba el nombre de una editorial como parmetro y luego lo utiliza para aumentar los precios de tal editorial:

Creamos otro procedimiento que recibe 2 parmetros, el nombre de una editorial y el valor de incremento (que tiene por defecto el valor 10): El procedimiento se ejecuta colocando "execute" (o "exec") seguido del nombre del procedimiento y los valores para los parmetros separados por comas: execute proc_libros_aument('Planeta',30);

Podemos omitir el segundo parmetro al invocar el procedimiento porque tiene establecido un valor por defecto: execute proc_libros_aument('Planeta');

BASE DE DATOS ORACLE 9i Rodrigo I. Pedrero Cdiz Ingeniero en Informtica

EJERCICIO 4: Crear un procedimiento almacenado que ingrese un nuevo libro en la tabla "libros". Llamamos al procedimiento sin enviarle valores para los parmetros. Vemos cmo se almacen el registro.

Llamamos al procedimiento envindole valores solamente para el primer y cuarto parmetros correspondientes al ttulo y precio:

Oracle asume que los argumentos son el primero y segundo, vea cmo se almacen el nuevo registro. Para ingresar valores sin tener que especificarlos se realizan de la siguiente manera.

BASE DE DATOS ORACLE 9i Rodrigo I. Pedrero Cdiz Ingeniero en Informtica

EJERCICIO 5:

Una empresa almacena los datos de sus empleados en una tabla llamada "empleados" la que se encuentra ya creada para los ejercicios anteriores. En caso que esta no este creada la creamos de la siguiente manera. 1- Teniendo la tabla creada previamente.

2- Borrar todos lo registros de la tabla empelados y agregar los siguientes: DELETE FROM empleados; insert into empleados values('22222222-2','Juan','Perez',200000,2,'10/10/1980'); insert into empleados values('33333333-3','Luis','Lopez',250000,0,'01/02/1990'); insert into empleados values('44444444-4','Marta','Perez',350000,1,'02/05/1995'); insert into empleados values('55555555-5','Susana','Garcia',400000,2,'15/12/2000'); insert into empleados values('66666666-6','Jose Maria','Morales',500000,3,'25/08/2005');

3- Crear un procedimiento almacenado llamado "proc_empleados_aumentarsueldo". Debe incrementar el sueldo de los empleados con cierta cantidad de aos en la empresa (parmetro "miyear" de tipo numrico) en un porcentaje (parmetro "miporcentaje" de tipo numerico); es decir, recibe 2 parmetros. 4- Ejecutar el procedimiento para que los empleados con ms de 10 aos aumenten un 20% 5- Verificar que los sueldos de los empleados con ms de 10 aos en la empresa aumenten un 20% 6- Ejecute el procedimiento creado anteriormente enviando otros valores como parmetros (por ejemplo, 8 y 10) 7- Verifique que los sueldos de los empleados con ms de 8 aos en la empresa han aumentado un 10% 8- Ejecutar el procedimiento almacenado "proc_empleados_aumentarsueldo" sin parmetros

BASE DE DATOS ORACLE 9i Rodrigo I. Pedrero Cdiz Ingeniero en Informtica

SOLUCION EJERCICIO 5:

BASE DE DATOS ORACLE 9i Rodrigo I. Pedrero Cdiz Ingeniero en Informtica

EJERCICIO 6:
1- Cree un procedimiento almacenado llamado "proc_empleados_ingresar" que ingrese un empleado en la tabla "empleados", debe recibir valor para el rut, el nombre, apellido , sueldo, cantidadhijos y fechaingreso. 2- Ejecute el procedimiento creado anteriormente y verifique si se ha ingresado en "empleados" un nuevo registro SOLUCION EJERCICIO 6:

EJERCICIO 7:
1- Crear un procedimiento almacenado que reciba un rut y elimine de la tabla "empleados" el empleado que coincida con dicho rut 9- Elimine un empleado utilizando el procedimiento del punto anterior 10- Verifique la eliminacin

SOLUCION EJERCICIO 7:

BASE DE DATOS ORACLE 9i Rodrigo I. Pedrero Cdiz Ingeniero en Informtica

TRIGGERS EN ORACLE 9i
Un "trigger" (disparador o desencadenador) es un bloque de cdigo que se ejecuta automticamente cuando ocurre algn evento (como insercin, actualizacin o borrado) sobre una determinada tabla (o vista); es decir, cuando se intenta modificar los datos de una tabla (o vista) asociada al disparador. Se crean para conservar la integridad referencial y la coherencia entre los datos entre distintas tablas; para registrar los cambios que se efectan sobre las tablas y la identidad de quien los realiz; para realizar cualquier accin cuando una tabla es modificada; etc. Si se intenta modificar (agregar, actualizar o eliminar) datos de una tabla asociada a un disparador, el disparador se ejecuta (se dispara) en forma automtica. La diferencia con los procedimientos almacenados del sistema es que los triggers: - no pueden ser invocados directamente; al intentar modificar los datos de una tabla asociada a un disparador, el disparador se ejecuta automticamente. - no reciben y retornan parmetros. - son apropiados para mantener la integridad de los datos, no para obtener resultados de consultas. Cuando trabajamos con trigger a nivel de fila, Oracle provee de dos tablas temporales a las cuales se puede acceder, que contienen los antiguos y nuevos valores de los campos del registro afectado por la sentencia que dispar el trigger. El nuevo valor es ":new" y el viejo valor es ":old". Para referirnos a ellos debemos especificar su campo separado por un punto ":new.CAMPO" y ":old.CAMPO". El acceso a estos campos depende del evento del disparador. En un trigger disparado por un "insert", se puede acceder al campo ":new" unicamente, el campo " En una insercin se puede emplear ":new" para escribir nuevos valores en las columnas de la tabla. En un trigger que se dispara con "update", se puede acceder a ambos campos. En una actualizacion, se pueden comparar los valores de ":new" y ":old". En un trigger de borrado, unicamente se puede acceder al campo "old", ya que el campo ":new" no existe luego que el registro es eliminado, el campo ":new" contiene "null" y no puede ser modificado. Los valores de "old" y "new" estn disponibles en triggers after y before. En el cuerpo el trigger, los campos "old" y "new" deben estar precedidos por ":" (dos puntos), pero si est en "when" no.

BASE DE DATOS ORACLE 9i Rodrigo I. Pedrero Cdiz Ingeniero en Informtica

Ejemplo:
Una empresa almacena los datos de sus empleados en una tabla denominada "empleados" y en una tabla "control", el nombre del usuario y la fecha, cada vez que se ingresa un nuevo registro en la tabla "empleados". Eliminamos la tabla empleados si existe para efectos de realizar un nuevo ejercicio: Creamos las tablas con la siguiente estructura:

Creamos un disparador que se dispare una vez por cada registro ingresado en "empleados"; el trigger debe ingresar en la tabla "control", el rut del empleado, el nombre del usuario que lo ha creado y la fecha en la cual se realiz un "insert" sobre "empleados"

Verificamos que no existan datos en las tablas.

BASE DE DATOS ORACLE 9i Rodrigo I. Pedrero Cdiz Ingeniero en Informtica

Luego agregamos los siguientes registros a la tabla empelados. insert insert insert insert insert insert into into into into into into empleados empleados empleados empleados empleados empleados values('22222222-2','Meneses','Ana','Secretaria'); values('33333333-3','Gomez','Daniel','Secretaria'); values('44444444-4','Gonzalez','Federico','Sistemas'); values('55555555-5','Pavez','Carlos','Contabilidad'); values('66666666-6','Flores','Gabriela','Sistemas'); values('77777777-7','Perez','Juan','Contabilidad');

Luego verificamos si el TRIGGER agrego los registros en la tabla control

EJERCICIOS 1- Crear una tabla hcoModificados y que mediante un trigger guarde los registros modificados de la tabla empleados en la tabla creada(hcoModificados). 2- Crear una tabla hcoEliminados y que mediante un trigger guarde los registros eliminados de la tabla empleados en la tabla creada(hcoModificados). 3- Se debe guardar en las tablas la fecha y el usuario que hizo la modificacin o eliminacin.

BASE DE DATOS ORACLE 9i Rodrigo I. Pedrero Cdiz Ingeniero en Informtica

Potrebbero piacerti anche