Está en la página 1de 4

Create database SinNombre;

use SINNOMBRE;

create table PRODUCTO(

id_producto INT AUTO_INCREMENT,


producto_nombre VARCHAR (255),
producto_precio INT NOT NULL,
producto_stock INT,
CONSTRAINT ConstPK_producto PRIMARY KEY (id_producto)

);

create table CLIENTE(

id_cliente INT AUTO_INCREMENT,


cliente_nombre VARCHAR (255) NOT NULL,
cliente_email VARCHAR (255) NOT NULL,
cliente_telefono VARCHAR (255) NOT NULL,
CONSTRAINT ConsPK_cliente PRIMARY KEY (id_cliente),
CONSTRAINT ConsUK_email UNIQUE (cliente_email)

);

create table FACTURA(

id_factura INT AUTO_INCREMENT,


id_cliente INT NOT NULL,
factura_fecha DATETIME NOT NULL,
CONSTRAINT ConsPK_factura PRIMARY KEY (id_factura),
foreign key (id_cliente) references CLIENTE (id_cliente)

);

create table DETALLE(

id_factura INT NOT NULL,


id_producto INT NOT NULL,
id_detalle INT AUTO_INCREMENT,
detalle_cantidad INT NOT NULL,
detalle_precio INT NOT NULL,
foreign key (id_factura) references FACTURA (id_factura),
foreign key (id_producto) references PRODUCTO (id_producto),
CONSTRAINT ConsPK_detalle PRIMARY KEY (id_detalle)

);

create table AUD_CLIENTE(

id_cliente INT,
cliente_nombre VARCHAR (255),
cliente_email VARCHAR (255),
cliente_telefono VARCHAR (255),
proceso VARCHAR (255),
fecha_proceso DATETIME

);
create table AUD_PRODUCTO(

id_producto INT,
producto_nombre VARCHAR (255),
producto_precio INT,
producto_stock INT,
proceso VARCHAR (255),
fecha_proceso DATETIME

);

create table AUD_FACTURA(

id_factura INT,
id_cliente INT,
factura_fecha DATETIME,
proceso VARCHAR (255),
fecha_proceso DATETIME

);

create table AUD_DETALLE(

id_factura INT,
id_producto INT,
id_detalle INT,
detalle_cantidad INT,
detalle_precio INT,
proceso VARCHAR (255),
fecha_proceso DATETIME

);

create trigger TR_INSERT_CLIENTE AFTER INSERT ON CLIENTE


FOR EACH ROW
INSERT INTO AUD_CLIENTE
VALUES(NEW.id_cliente,NEW.cliente_nombre,NEW.cliente_email,NEW.cliente_telefono,
'INCERCION', NOW());

CREATE TRIGGER TR_INSERT_PRODUCTO AFTER INSERT ON PRODUCTO


FOR EACH ROW
INSERT INTO AUD_PRODUCTO
VALUES ( NEW.id_producto, NEW.producto_nombre, NEW.producto_precio,
NEW.producto_stock, 'INSERCION', NOW());

CREATE TRIGGER TR_INSERT_FACTURA AFTER INSERT ON FACTURA


FOR EACH ROW
INSERT INTO AUD_FACTURA
VALUES(NEW.id_factura,NEW.id_cliente,NEW.factura_fecha, 'INCERCION', NOW());

CREATE TRIGGER TR_INSERT_DETALLE AFTER INSERT ON DETALLE


FOR EACH ROW
INSERT INTO AUD_DETALLE
VALUES (NEW.id_factura, NEW.id_producto, NEW.id_detalle, NEW.detalle_cantidad,
NEW.detalle_precio, 'INSERCION', NOW());

/*--------------------------------------------TRIGGER
BEFORE--------------------------------------------------------*/

CREATE TRIGGER TR_UPDATE_CLIENTE BEFORE UPDATE ON CLIENTE


FOR EACH ROW
INSERT INTO AUD_CLIENTE
VALUES(OLD.id_cliente,OLD.cliente_nombre,OLD.cliente_email,OLD.cliente_telefono,
'ACTUALIZACION', NOW());

CREATE TRIGGER TR_UPDATE_PRODUCTO BEFORE UPDATE ON PRODUCTO


FOR EACH ROW
INSERT INTO AUD_PRODUCTO
VALUES (OLD.id_producto, OLD.producto_nombre, OLD.producto_precio,
OLD.producto_stock, 'ACTUALIZACION', NOW());

CREATE TRIGGER TR_UPDATE_FACTURA BEFORE UPDATE ON FACTURA


FOR EACH ROW
INSERT INTO AUD_FACTURA
VALUES(OLD.id_factura,OLD.id_cliente,OLD.factura_fecha, 'ACTUALIZACION', NOW());

CREATE TRIGGER TR_UPDATE_DETALLE BEFORE UPDATE ON DETALLE


FOR EACH ROW
INSERT INTO AUD_DETALLE
VALUES (OLD.id_factura, OLD.id_producto, OLD.id_detalle, OLD.detalle_cantidad,
OLD.detalle_precio, 'ACTUALIZACION', NOW());

-- BackUp Factura --

create table backup_factura(

id_factura INT,
id_cliente INT,
factura_fecha DATETIME

);

DELIMITER $$
create procedure backup_factura()
BEGIN
TRUNCATE TABLE backup_factura;
INSERT INTO backup_factura SELECT * FROM FACTURA;
END$$

-- Backup Detalle --

create table backup_detalle(

id_cliente INT,
cliente_nombre VARCHAR (255),
cliente_email VARCHAR (255),
cliente_telefono VARCHAR (255)

);

DELIMITER $$
create procedure copiar_datos()
BEGIN
SELECT * FROM CLIENTE;
SELECT * FROM PRODUCTO;
END $$

create event ev_copiarclienteproducto


ON SCHEDULE EVERY 1 day starts ('2021-08-02 00:02:30')
do call copiar_datos()

También podría gustarte