Anda di halaman 1dari 33

Construcción de elementos de programación para el proyecto

ii

Tabla de Contenidos

Construcción de elementos de programación para el proyecto de formación .................... 1


Actividad ......................................................................................................................... 1
Procedimientos almacenados .......................................................................................... 1
1. Procedimiento para insertar un proveedor .............................................................. 1
2. Procedimiento para insertar un cliente .................................................................... 2
3. Procedimiento para insertar un producto ................................................................ 4
4. Procedimiento para consultar todos los clientes ..................................................... 5
5. Procedimiento para consultar todos los proveedores .............................................. 6
6. Procedimiento para consultar todos los productos.................................................. 6
7. Procedimiento para consultar el inventario............................................................. 7
8. Procedimiento para consultar el total de ventas por factura ................................... 8
9. Procedimiento para consultar en detalle las ventas realizadas ................................ 9
10. Procedimiento para consultar en detalle las compras realizadas ........................ 10
Funciones ...................................................................................................................... 11
1. Menor producto en inventario ............................................................................... 11
2. Mayor producto en inventario ............................................................................... 12
3. Promedio costo producto ...................................................................................... 12
4. Cantidad ventas ..................................................................................................... 13
5. Cantidad compras.................................................................................................. 14
Triggers ......................................................................................................................... 15
1. Actualización y borrado en tabla Cliente .............................................................. 15
2. Actualización y borrado en tabla Inventario. ........................................................ 19
3. Actualización y borrado en tabla Factura_Venta .................................................. 22
4. Actualización y borrado en tabla Detalle_Venta .................................................. 24
5. Actualización y borrado en tabla Factura_Compra .............................................. 27
1

Construcción de elementos de programación para el proyecto de formación

Actividad

Una vez realizados los ejercicios de práctica expuestos en el laboratorio y

validados por el tutor técnico, se debe concertar un encuentro sincrónico con el tutor

técnico y el equipo de proyecto para determinar los elementos de programación a

construir para el sistema de información, estos deben elaborar se en el SGBD

seleccionado.

Estos elementos deben cumplir con las siguientes especificaciones:

 Para cada elemento se debe identificar a que requerimiento funcional o caso de

uso apoyan.

 Deben construirse mínimo 10 procedimientos almacenados.

 Deben construirse mínimo 5 funciones.

 Deben construirse mínimo 5 desencadenadores.

Los anteriores elementos deben ser presentados en un documento donde se

especifiquen los ítems determinados anteriormente, el objetivo de cada uno de los

elementos propuestos, los códigos correspondientes a los elementos programados y los

resultados de la ejecución sobre la base de datos del proyecto.

Procedimientos almacenados

1. Procedimiento para insertar un proveedor

CREATE PROCEDURE PA_INSERTAR_PROVEEDOR (


2

IdProveedor VARCHAR(15),

IdTipoDocumento INT,

Nombres VARCHAR(100),

Correo VARCHAR(45),

Direccion VARCHAR(45),

Contacto VARCHAR(70),

Telefono VARCHAR(45),

IdMunicipio INT,

FechaIngreso DATE,

IdEstado INT)

INSERT INTO PROVEEDOR (IdProveedor, IdTipoDocumento, Nombres,

Correo, Direccion, Contacto, Telefono, IdMunicipio, FechaIngreso, IdEstado)

VALUES (IdProveedor, IdTipoDocumento, Nombres, Correo, Direccion,

Contacto, Telefono, IdMunicipio, FechaIngreso, IdEstado);

CALL PA_INSERTAR_PROVEEDOR ('71435671', 2, 'CARLOS ESPINOSA',

'ce@gmail.com', 'CARRERA 92 NRO. 32-04', 'CARLOS', '2456789', 1, '2017/04/30', 1);

2. Procedimiento para insertar un cliente


3

CREATE PROCEDURE PA_INSERTAR_CLIENTE (

IdCliente VARCHAR(15),

IdTipoDocumento INT,

Nombres VARCHAR(60),

Apellidos VARCHAR(60),

Correo VARCHAR(45),

Direccion VARCHAR(45),

Telefono VARCHAR(45),

IdMunicipio INT,

FechaNacimiento DATE,

FechaIngreso DATE,

Contacto VARCHAR(70),

IdEstado INT)

INSERT INTO CLIENTE (IdCliente, IdTipoDocumento, Nombres, Apellidos,

Correo, Direccion, Telefono, IdMunicipio, FechaNacimiento, FechaIngreso, Contacto,

IdEstado)

VALUES (IdCliente, IdTipoDocumento, Nombres, Apellidos, Correo, Direccion,

Telefono, IdMunicipio, FechaNacimiento, FechaIngreso, Contacto, IdEstado);


4

CALL PA_INSERTAR_CLIENTE ('43654120', 2, 'KATHERIN', 'MACIAS',

'km@gmail.com', 'CALLE 21 NRO. 41-00', '5482312', 4, '2016/03/10','2017/08/17',

'KATHERIN', 1);

3. Procedimiento para insertar un producto

CREATE PROCEDURE PA_INSERTAR_PRODUCTO (

IdProducto INT,

Descripcion VARCHAR(70),

IdMarca INT,

IdClasificacion INT,

IdUnidadMedida INT,

Precio FLOAT,

Iva FLOAT,

FechaIngreso DATE,

IdEstado INT,

Notas VARCHAR(100))

INSERT INTO PRODUCTO VALUES (IdProducto, Descripcion, IdMarca,

IdClasificacion, IdUnidadMedida, Precio, Iva, FechaIngreso, IdEstado, Notas);


5

CALL PA_INSERTAR_PRODUCTO (6, 'MONITOR LENOVO 19"', 4, 4, 1,

630000,0,'2017/09/30', 1, NULL);

4. Procedimiento para consultar todos los clientes

Procedimiento almacenado que muestra todos los campos de la tabla clientes

ordenados por nombre.

CREATE PROCEDURE PA_CONSULTA_CLIENTES()

SELECT C.IdCliente, T.Descripcion AS TipoDocumento, C.Nombres,

C.Apellidos, C.Correo, C.Direccion, C.Telefono, M.Descripcion AS Municipio,

C.FechaNacimiento, C.FechaIngreso, C.Contacto, E.Descripcion AS Estado

FROM CLIENTE AS C, MUNICIPIO AS M, TIPO_DOCUMENTO AS T,

ESTADO AS E

WHERE C.IdTipoDocumento = T.IdTipoDocumento AND C.IdMunicipio =

M.IdMunicipio AND C.IdEstado = E.IdEstado

ORDER BY Nombres;

CALL PA_CONSULTA_CLIENTES()
6

5. Procedimiento para consultar todos los proveedores

Procedimiento almacenado que muestra todos los campos de la tabla proveedores,

el nombre de tipo de documento y el municipio ordenados por IdProveedor

CREATE PROCEDURE PA_CONSULTA_PROVEEDORES()

SELECT P.IdProveedor, T.Descripcion AS TipoDocumento, P.Nombres,

P.Correo, P.Direccion, P.Contacto, P.Telefono, M.Descripcion AS Municipio,

P.FechaIngreso, E.Descripcion AS Estado

FROM PROVEEDOR AS P, MUNICIPIO AS M, TIPO_DOCUMENTO AS T,

ESTADO AS E

WHERE P.IdTipoDocumento = T.IdTipoDocumento AND P.IdMunicipio =

M.IdMunicipio AND P.IdEstado = E.IdEstado

ORDER BY IdProveedor;

CALL PA_CONSULTA_PROVEEDORES();

6. Procedimiento para consultar todos los productos


7

Procedimiento almacenado que muestra todos los campos de la tabla productos

ordenados por IdProducto.

CREATE PROCEDURE PA_CONSULTA_PRODUCTOS()

SELECT P.IdProducto, P.Descripcion, M.Descripcion AS Marca, C.Descripcion

AS Clasificación, U.Descripcion AS UnidadMedida, P.Precio, P.Iva, P.FechaIngreso,

E.Descripcion AS Estado, P.Notas

FROM PRODUCTO AS P, MARCA AS M, CLASIFICACION AS C,

UNIDAD_MEDIDA AS U, ESTADO AS E

WHERE P.IdMarca = M.IdMarca AND P.IdClasificacion = C.IdClasificacion

AND P.IdUnidadMedida = U.IdUnidadMedida AND P.IdEstado = E.IdEstado

ORDER BY P.IdProducto;

CALL PA_CONSULTA_PRODUCTOS();

7. Procedimiento para consultar el inventario

Procedimiento almacenado que muestra todos los productos y las unidades que

existen en el inventario.

CREATE PROCEDURE PA_CONSULTA_INVENTARIO()


8

SELECT I.IdProducto, P.Descripcion, I.Cantidad, B.Descripcion AS Bodega

FROM INVENTARIO AS I, PRODUCTO AS P, BODEGA AS B

WHERE I.IdProducto = P.IdProducto AND I.IdBodega = B.IdBodega

ORDER BY I.IdProducto;

CALL PA_CONSULTA_INVENTARIO;

8. Procedimiento para consultar el total de ventas por factura

Procedimiento almacenado que muestra el número de factura de venta, cliente y

total.

CREATE PROCEDURE PA_CONSULTA_FACTURAVENTA()

SELECT V.IdFacturaVenta AS NroFacturaVenta, T.Descripcion AS

TipoDocumento, C.IdCliente AS NroDocumento, C.Nombres, C.Apellidos,

SUM(D.Precio * D.Cantidad) AS Total

FROM DETALLE_VENTA as D, FACTURA_VENTA AS V, CLIENTE AS C,

TIPO_DOCUMENTO AS T
9

WHERE D.IdFacturaVenta = V.IdFacturaVenta AND C.IdCliente = V.IdCliente

AND T.IdTipoDocumento = C.IdTipoDocumento

GROUP BY D.IdFacturaVenta

CALL PA_CONSULTA_FACTURAVENTA;

9. Procedimiento para consultar en detalle las ventas realizadas

Procedimiento almacenado que muestra todas las ventas realizadas, con el nombre

del cliente, producto, cantidad, precio unitario y total.

CREATE PROCEDURE PA_CONSULTA_VENTASREALIZADAS()

SELECT V.IdFacturaVenta, V.Fecha, C.Nombres, P.Descripcion, D.Cantidad,

D.Precio PrecioxUnidad, (D.Precio * D.Cantidad) Total

FROM FACTURA_VENTA AS V, DETALLE_VENTA AS D, CLIENTE AS C,

PRODUCTO AS P

WHERE V.IdFacturaVenta = D.IdFacturaVenta AND C.IdCliente = V.IdCliente

AND P.IdProducto = D.IdProducto

ORDER BY IdFacturaVenta;
10

CALL PA_CONSULTA_VENTASREALIZADAS;

10. Procedimiento para consultar en detalle las compras realizadas

Procedimiento almacenado que muestra todas las compras realizadas, con el

nombre del proveedor, producto, cantidad, precio unitario y total.

CREATE PROCEDURE PA_CONSULTA_COMPRASREALIZADAS()

SELECT C.IdFacturaCompra, C.Fecha, PR.Nombres, P.Descripcion, D.Cantidad,

D.Costo AS PrecioxUnidad, (D.Costo * D.Cantidad) AS Total

FROM FACTURA_COMPRA AS C, DETALLE_COMPRA AS D,

PROVEEDOR AS PR, PRODUCTO AS P

WHERE C.IdFacturaCompra = D.IdfacturaCompra AND C.IdProveedor =

PR.IdProveedor AND P.IdProducto = D.IdProducto

ORDER BY IdFacturaCompra;
11

CALL PA_CONSULTA_COMPRASREALIZADAS;

Funciones

1. Menor producto en inventario

Función que muestra el producto con menor cantidad en inventario

DELIMITER //

CREATE FUNCTION FN_PRODUCTOMENORINVENTARIO()

RETURNS VARCHAR(50)

BEGIN

DECLARE VALOR VARCHAR(50);

SELECT CONCAT(P.IdProducto, ' ', P.Descripcion, ' ', B.Descripcion, ' ',

MIN(Cantidad)) INTO VALOR

FROM INVENTARIO AS I, PRODUCTO AS P, BODEGA AS B

WHERE I.IdProducto = P.IdProducto AND I.IdBodega = B.IdBodega;

RETURN VALOR;

END

//

SELECT FN_PRODUCTOMENORINVENTARIO();
12

2. Mayor producto en inventario

Función que muestra el producto con mayor cantidad en inventario

DELIMITER //

CREATE FUNCTION FN_PRODUCTOMAYORINVENTARIO()

RETURNS VARCHAR(50)

BEGIN

DECLARE VALOR VARCHAR(50);

SELECT CONCAT(P.IdProducto, ' ', P.Descripcion, ' ', B.Descripcion, ' ',

MAX(Cantidad)) INTO VALOR

FROM INVENTARIO AS I, PRODUCTO AS P, BODEGA AS B

WHERE I.IdProducto = P.IdProducto AND I.IdBodega = B.IdBodega;

RETURN VALOR;

END

//

SELECT FN_PRODUCTOMAYORINVENTARIO();

3. Promedio costo producto

Función que muestra el costo promedio de los productos


13

DELIMITER //

CREATE FUNCTION FN_PROMEDIOCOSTOPRODUCTOS()

RETURNS FLOAT

BEGIN

DECLARE VALOR FLOAT;

SELECT AVG(Precio) INTO VALOR

FROM PRODUCTO;

RETURN VALOR;

END

//

SELECT FN_PROMEDIOCOSTOPRODUCTOS();

4. Cantidad ventas

Función que muestra el número de ventas realizadas

DELIMITER //

CREATE FUNCTION FN_CANTIDADVENTAS()

RETURNS INT

BEGIN

DECLARE VALOR INT;


14

SELECT COUNT(IdFacturaVenta)INTO VALOR

FROM FACTURA_VENTA;

RETURN VALOR;

END

//

SELECT FN_CANTIDADVENTAS();DELIMITER //

5. Cantidad compras

Función que muestra el número de compras realizadas

DELIMITER //

CREATE FUNCTION FN_CANTIDADCOMPRAS()

RETURNS INT

BEGIN

DECLARE VALOR INT;

SELECT COUNT(IdFacturaCompra)INTO VALOR

FROM FACTURA_COMPRA;

RETURN VALOR;

END

//
15

SELECT FN_CANTIDADCOMPRAS();

Triggers

Construir disparador para controlar la actualización y borrado de registros en las

tablas Cliente, Inventario,

1. Actualización y borrado en tabla Cliente

CREATE TABLE AUDITORIA_CLIENTE (

IdAuditoria INT NOT NULL AUTO_INCREMENT,

IdTipoDocumento_Old INT,

Nombres_Old VARCHAR(60),

Apellidos_Old VARCHAR(60),

Correo_Old VARCHAR(45),

Direccion_Old VARCHAR(45),

Telefono_Old VARCHAR(45),

IdMunicipio_Old INT,

FechaNacimiento_Old DATE,

FechaIngreso_Old DATE,

Contacto_Old VARCHAR(70),

IdEstado_Old INT,

IdTipoDocumento_New INT,
16

Nombres_New VARCHAR(60),

Apellidos_New VARCHAR(60),

Correo_New VARCHAR(45),

Direccion_New VARCHAR(45),

Telefono_New VARCHAR(45),

IdMunicipio_New INT,

FechaNacimiento_New DATE,

FechaIngreso_New DATE,

Contacto_New VARCHAR(70),

IdEstado_New INT,

FechaModificacion DATETIME,

Usuario VARCHAR(50),

IdCliente VARCHAR(15),

Accion VARCHAR(50),

CONSTRAINT AUDITORIA_CLIENTE_PK PRIMARY KEY (IdAuditoria));

CREATE TRIGGER AUDITORIA_MODIFICACIONCLIENTE BEFORE

UPDATE ON CLIENTE

FOR EACH ROW

INSERT INTO AUDITORIA_CLIENTE(

IdTipoDocumento_Old,

Nombres_Old,
17

Apellidos_Old,

Correo_Old,

Direccion_Old,

Telefono_Old,

IdMunicipio_Old,

FechaNacimiento_Old,

FechaIngreso_Old,

Contacto_Old,

IdEstado_Old,

IdTipoDocumento_New,

Nombres_New,

Apellidos_New,

Correo_New ,

Direccion_New,

Telefono_New,

IdMunicipio_New,

FechaNacimiento_New,

FechaIngreso_New,

Contacto_New,

IdEstado_New,

FechaModificacion,

Usuario,
18

IdCliente,

Accion)

VALUES

(OLD.IdTipoDocumento, OLD.Nombres, OLD.Apellidos, OLD.Correo,

OLD.Direccion, OLD.Telefono, OLD.IdMunicipio,

OLD.FechaNacimiento, OLD.FechaIngreso, OLD.Contacto, OLD.IdEstado,

NEW.IdTipoDocumento, NEW.Nombres, NEW.Apellidos, NEW.Correo,

NEW.Direccion, NEW.Telefono, NEW.IdMunicipio,

NEW.FechaNacimiento, NEW.FechaIngreso, NEW.Contacto, NEW.IdEstado,

NOW(), CURRENT_USER(), NEW.IdCliente, 'ACTUALIZACION');

CREATE TRIGGER AUDITORIA_ELIMINACIONCLIENTE AFTER

DELETE ON CLIENTE

FOR EACH ROW

INSERT INTO AUDITORIA_CLIENTE(

IdTipoDocumento_Old,

Nombres_Old,

Apellidos_Old,

Correo_Old,

Direccion_Old,

Telefono_Old,

IdMunicipio_Old,
19

FechaNacimiento_Old,

FechaIngreso_Old,

Contacto_Old,

IdEstado_Old,

FechaModificacion,

Usuario,

IdCliente,

Accion)

VALUES

(OLD.IdTipoDocumento, OLD.Nombres, OLD.Apellidos, OLD.Correo,

OLD.Direccion, OLD.Telefono, OLD.IdMunicipio,

OLD.FechaNacimiento, OLD.FechaIngreso, OLD.Contacto, OLD.IdEstado,

NOW(), CURRENT_USER(), OLD.IdCliente, 'REGISTRO ELIMINADO');

SELECT *

FROM AUDITORIA_CLIENTE;

2. Actualización y borrado en tabla Inventario.

Construir disparador para controlar la actualización y borrado de registros en la

tabla inventario

CREATE TABLE AUDITORIA_INVENTARIO (


20

IdAuditoria INT NOT NULL AUTO_INCREMENT,

Cantidad_Old FLOAT,

Cantidad_New FLOAT,

FechaModificacion DATETIME,

Usuario VARCHAR(50),

IdProducto INT,

IdBodega INT,

Accion VARCHAR(50),

CONSTRAINT AUDITORIA_INVENTARIO_PK PRIMARY KEY

(IdAuditoria));

CREATE TRIGGER AUDITORIA_MODIFICACIONINVENTARIO BEFORE

UPDATE ON INVENTARIO

FOR EACH ROW

INSERT INTO AUDITORIA_INVENTARIO(

Cantidad_Old,

Cantidad_New,

FechaModificacion,

Usuario,

IdProducto,

IdBodega,

Accion)
21

VALUES

(OLD.Cantidad,

NEW.Cantidad,

NOW(), CURRENT_USER(), NEW.IdProducto, NEW.IdBodega,

'ACTUALIZACION');

CREATE TRIGGER AUDITORIA_ELIMINACIONINVENTARIO AFTER

DELETE ON INVENTARIO

FOR EACH ROW

INSERT INTO AUDITORIA_INVENTARIO(

Cantidad_Old,

FechaModificacion,

Usuario,

IdProducto,

IdBodega,

Accion)

VALUES

(OLD.Cantidad,

NOW(), CURRENT_USER(), OLD.IdProducto, OLD.IdBodega, 'REGISTRO

ELIMINADO');
22

SELECT *

FROM AUDITORIA_ INVENTARIO;

3. Actualización y borrado en tabla Factura_Venta

CREATE TABLE AUDITORIA_FACTURA_VENTA (

IdAuditoria INT NOT NULL AUTO_INCREMENT,

IdCliente_Old VARCHAR(15),

Fecha_Old DATE,

IdEstado_Old INT,

IdUsuario_Old VARCHAR(15),

IdCliente_New VARCHAR(15),

Fecha_New DATE,

IdEstado_New INT,

IdUsuario_New VARCHAR(15),

FechaModificacion DATETIME,

Usuario VARCHAR(50),

IdFacturaVenta INT,

Accion VARCHAR(50),

CONSTRAINT AUDITORIA_FACTURA_VENTA_PK PRIMARY KEY

(IdAuditoria));
23

CREATE TRIGGER AUDITORIA_MODIFICACIONFACTURA_VENTA

BEFORE UPDATE ON FACTURA_VENTA

FOR EACH ROW

INSERT INTO AUDITORIA_FACTURA_VENTA(

IdCliente_Old,

Fecha_Old,

IdEstado_Old,

IdUsuario_Old,

IdCliente_New,

Fecha_New,

IdEstado_New,

IdUsuario_New,

FechaModificacion,

Usuario,

IdFacturaVenta,

Accion)

VALUES

(OLD.IdCliente, OLD.Fecha, OLD.IdEstado, OLD.IdUsuario,

NEW.IdCliente, NEW.Fecha, NEW.IdEstado, NEW.IdUsuario,

NOW(), CURRENT_USER(), NEW.IdFacturaVenta, 'ACTUALIZACION');


24

CREATE TRIGGER AUDITORIA_ELIMINACIONFACTURA_VENTA

AFTER DELETE ON FACTURA_VENTA

FOR EACH ROW

INSERT INTO AUDITORIA_FACTURA_VENTA(

IdCliente_Old,

Fecha_Old,

IdEstado_Old,

IdUsuario_Old,

FechaModificacion,

Usuario,

IdFacturaVenta,

Accion)

VALUES

(OLD.IdCliente, OLD.Fecha, OLD.IdEstado, OLD.IdUsuario,

NOW(), CURRENT_USER(), OLD.IdFacturaVenta, 'REGISTRO

ELIMINADO');

SELECT *

FROM AUDITORIA_FACTURA_VENTA;

4. Actualización y borrado en tabla Detalle_Venta


25

CREATE TABLE AUDITORIA_DETALLE_VENTA (

IdAuditoria INT NOT NULL AUTO_INCREMENT,

IdFacturaVenta_Old INT,

IdProducto_Old INT,

Cantidad_Old FLOAT,

Precio_Old FLOAT,

IdFacturaVenta_New INT,

IdProducto_New INT,

Cantidad_New FLOAT,

Precio_New FLOAT,

FechaModificacion DATETIME,

Usuario VARCHAR(50),

IdDetalleVenta INT,

Accion VARCHAR(50),

CONSTRAINT AUDITORIA_DETALLE_VENTA_PK PRIMARY KEY

(IdAuditoria));

CREATE TRIGGER AUDITORIA_MODIFICACIONDETALLE_VENTA

BEFORE UPDATE ON DETALLE_VENTA

FOR EACH ROW

INSERT INTO AUDITORIA_DETALLE_VENTA(

IdFacturaVenta_Old,
26

IdProducto_Old,

Cantidad_Old,

Precio_Old,

IdFacturaVenta_New,

IdProducto_New,

Cantidad_New,

Precio_New,

FechaModificacion,

Usuario,

IdDetalleVenta,

Accion)

VALUES

(OLD.IdFacturaVenta, OLD.IdProducto, OLD.Cantidad, OLD.Precio,

NEW.IdFacturaVenta, NEW.IdProducto, NEW.Cantidad, NEW.Precio,

NOW(), CURRENT_USER(), NEW.IdDetalleVenta, 'ACTUALIZACION');

CREATE TRIGGER AUDITORIA_ELIMINACIONDETALLE_VENTA

AFTER DELETE ON DETALLE_VENTA

FOR EACH ROW

INSERT INTO AUDITORIA_DETALLE_VENTA(

IdFacturaVenta_Old,

IdProducto_Old,
27

Cantidad_Old,

Precio_Old,

FechaModificacion,

Usuario,

IdDetalleVenta,

Accion)

VALUES

(OLD.IdFacturaVenta, OLD.IdProducto, OLD.Cantidad, OLD.Precio,

NOW(), CURRENT_USER(), OLD.IdDetalleVenta, 'REGISTRO

ELIMINADO');

SELECT *

FROM AUDITORIA_DETALLE_VENTA;

5. Actualización y borrado en tabla Factura_Compra

CREATE TABLE AUDITORIA_FACTURA_COMPRA (

IdAuditoria INT NOT NULL AUTO_INCREMENT,

FacturaProveedor_Old INT,

IdProveedor_Old VARCHAR(15),

IdOrdenCompra_Old INT,
28

Fecha_Old DATE,

IdEstado_Old INT,

IdUsuario_Old VARCHAR(15),

FacturaProveedor_New INT,

IdProveedor_New VARCHAR(15),

IdOrdenCompra_New INT,

Fecha_New DATE,

IdEstado_New INT,

IdUsuario_New VARCHAR(15),

FechaModificacion DATETIME,

Usuario VARCHAR(50),

IdFacturaCompra INT,

Accion VARCHAR(50),

CONSTRAINT AUDITORIA_FACTURA_COMPRA_PK PRIMARY KEY

(IdAuditoria));

CREATE TRIGGER AUDITORIA_MODIFICACIONFACTURA_COMPRA

BEFORE UPDATE ON FACTURA_COMPRA

FOR EACH ROW

INSERT INTO AUDITORIA_FACTURA_COMPRA(

FacturaProveedor_Old,

IdProveedor_Old,
29

IdOrdenCompra_Old,

Fecha_Old,

IdEstado_Old,

IdUsuario_Old,

FacturaProveedor_New,

IdProveedor_New,

IdOrdenCompra_New,

Fecha_New,

IdEstado_New,

IdUsuario_New,

FechaModificacion,

Usuario,

IdFacturaCompra,

Accion)

VALUES

(OLD.FacturaProveedor, OLD.IdProveedor, OLD.IdOrdenCompra, OLD.Fecha,

OLD.IdEstado, OLD.IdUsuario,

NEW.FacturaProveedor, NEW.IdProveedor, NEW.IdOrdenCompra, NEW.Fecha,

NEW.IdEstado, NEW.IdUsuario,

NOW(), CURRENT_USER(), NEW.IdFacturaCompra, 'ACTUALIZACION');


30

CREATE TRIGGER AUDITORIA_ELIMINACIONFACTURA_COMPRA

AFTER DELETE ON FACTURA_COMPRA

FOR EACH ROW

INSERT INTO AUDITORIA_FACTURA_COMPRA(

FacturaProveedor_Old,

IdProveedor_Old,

IdOrdenCompra_Old,

Fecha_Old,

IdEstado_Old,

IdUsuario_Old,

FechaModificacion,

Usuario,

IdFacturaCompra,

Accion)

VALUES

(OLD.FacturaProveedor, OLD.IdProveedor, OLD.IdOrdenCompra, OLD.Fecha,

OLD.IdEstado, OLD.IdUsuario,

NOW(), CURRENT_USER(), IdFacturaCompra, 'REGISTRO ELIMINADO');

SELECT *

AUDITORIA_FACTURA_COMPRA;
31

Anda mungkin juga menyukai