Está en la página 1de 2

DROP DATABASE IF EXISTS grupo04;

CREATE DATABASE grupo04


CHARACTER SET = 'utf16';

ALTER DATABASE grupo04 COLLATE = 'utf16_bin';

SHOW DATABASES;

--------------------

USE grupo04;

CREATE TABLE PRUEBA (campo1 int);

DROP TABLE IF EXISTS USERS;

CREATE TABLE USERS (


id_user INT(10) PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(30) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
usermail VARCHAR(200) NOT NULL UNIQUE
);

CREATE TABLE USERS (


id_user INT(10) AUTO_INCREMENT,
username VARCHAR(30) NOT NULL ,
password VARCHAR(255) NOT NULL,
usermail VARCHAR(200) NOT NULL,
CONSTRAINT consPK_users PRIMARY KEY (id_user),
CONSTRAINT consUK1_users UNIQUE(username),
CONSTRAINT consUK2_users UNIQUE(usermail)
);

CREATE TABLE ROLES (


id_rol INT(10) AUTO_INCREMENT,
rolname VARCHAR(50) NOT NULL ,
description VARCHAR(200) NOT NULL,
CONSTRAINT consPK_roles PRIMARY KEY (id_rol),
CONSTRAINT consUK_roles UNIQUE(rolname)
);

CREATE TABLE USERROL (


id_user INT(10) NOT NULL,
id_rol INT(10) NOT NULL,
CONSTRAINT consFK_userrol_users FOREIGN KEY(id_user) REFERENCES users(id_user),
CONSTRAINT consFK_userrol_roles FOREIGN KEY (id_rol) REFERENCES roles(id_rol)
);

ALTER TABLE USERS


ADD INDEX usernameIndex (username ASC);

--------

CREATE TABLE AUD_USERS (


id_user INT(10) NOT NULL,
username VARCHAR(30) NOT NULL ,
password VARCHAR(255) NOT NULL,
usermail VARCHAR(200) NOT NULL,
event VARCHAR(15),
event_date DATETIME
);

CREATE TRIGGER tr_insert_users AFTER INSERT ON USERS


FOR EACH ROW
INSERT INTO AUD_USERS
VALUES (NEW.id_user,NEW.username,NEW.password,NEW.usermail,
'INSERCION',NOW());

select * from users;


select * from aud_users;

INSERT INTO users VALUES(0,'danielita','987','daniela@gmail.com');

UPDATE users SET usermail='dbarrios@outlook.com' WHERE username='danielita';

CREATE TRIGGER tr_update_users BEFORE UPDATE ON USERS


FOR EACH ROW
INSERT INTO AUD_USERS
VALUES (OLD.id_user,OLD.username,OLD.password,OLD.usermail,
'ACTUALIZACION',NOW());

--------------------

CREATE TABLE USERS_COPY (


id_user INT(10) NOT NULL,
username VARCHAR(30) NOT NULL ,
password VARCHAR(255) NOT NULL,
usermail VARCHAR(200) NOT NULL
);

DELIMITER $$
CREATE PROCEDURE backup_users()
BEGIN
TRUNCATE TABLE users_copy;
INSERT INTO users_copy SELECT * FROM users;
END$$

select * from users;


select * from users_copy;

CALL backup_users();

TRUNCATE TABLE users_copy;

------

CREATE EVENT doBackupUsers


ON SCHEDULE EVERY 1 MINUTE STARTS LOCALTIME()
DO CALL backup_users();

También podría gustarte