Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 8

CREATE TABLE PHONGBAN (

MAPB NVARCHAR(4) PRIMARY KEY,

TENPB NVARCHAR(100)

);

CREATE TABLE CHUCVU(

MACV NVARCHAR(4) PRIMARY KEY,

TENCV NVARCHAR(100),

HSCV FLOAT

);

CREATE TABLE NHANVIEN (

MANV NVARCHAR(5) PRIMARY KEY,

HOLOT NVARCHAR(20),

TENNV CHAR(50),

NGAYSINH DATE,

QUEQUAN NVARCHAR(100),

SODT NVARCHAR (15),

MAPB NVARCHAR(4) ,

MACV NVARCHAR(4) ,

FOREIGN KEY (MAPB) REFERENCES PHONGBAN(MAPB),

FOREIGN KEY (MACV) REFERENCES CHUCVU(MACV)

);

CREATE TABLE HESOLUONG(

THANG INT,

MANV NVARCHAR(5),

HSL FLOAT
FOREIGN KEY (MANV) REFERENCES NHANVIEN(MANV)

);

CREATE TABLE CT_THUONG (

STT INT PRIMARY KEY,

MATHUONG NVARCHAR(5),

MANV NVARCHAR(5),

SOTIEN FLOAT,

FOREIGN KEY (MANV) REFERENCES NHANVIEN(MANV)

);

CREATE TABLE QUYTHUONG (

MAQT NVARCHAR(5) PRIMARY KEY,

DANHMUC NVARCHAR(100),

TONGTIEN FLOAT

);

ALTER TABLE CT_THUONG

ADD MAQT NVARCHAR(5),

ADD FOREIGN KEY (MAQT) REFERENCES QUYTHUONG(MAQT);

INSERT INTO PHONGBAN

VALUES('PB01','PHONG DEV'),

('PB02','PHONG MAKETING'),

('PB03','PHONG MEETING'),

('PB04','PHONG CALL'),

('PB05','PHONG TALKING');

INSERT INTO CHUCVU

VALUES('CV01','TRUONG PHONG',1.5),

('CV02','NHAN VIEN',1.2),
('CV03','HR',1.1),

('CV04','GIAM DOC',1.0),

('CV05','PHO GIAM DOC',1);

INSERT INTO NHANVIEN

VALUES('NV01','TRONG LE','HUY','2006-12-20', 'DA NANG', '1234567890',


'PB01', 'CV01'),

('NV02','MINH LE','THONG','2001-11-21', 'PHU YEN', '123455820', 'PB02',


'CV03'),

('NV03','TRONG LE','DO','2008-10-22', 'LAO', '1234567890', 'PB03', 'CV04'),

('NV04','TRONG LE','RO','2010-9-24', 'CAMPUCHIA', '1235287890', 'PB05',


'CV05'),

('NV05','TRONG LE','SI','1999-8-26', 'INDO', '1265467890', 'PB01', 'CV02'),

('NV06','TRONG LE','LEO','2013-7-11', 'DA NANG2', '1234567890', 'PB02',


'CV01'),

('NV07','MINH LE','THONG6','2003-6-12', 'PHU YEN2', '123455820', 'PB02',


'CV03'),

('NV08','TRONG LE','HUNG','2006-5-13', 'LAO3', '1234567890', 'PB03', 'CV04'),

('NV09','TRONG LE','KIEN','2004-4-14', 'CAMPUCHIA5', '1235287890', 'PB04',


'CV05'),

('NV10','TRONG LE','RUNG','2002-3-15', 'INDONEXIA7', '1265467890', 'PB05',


'CV02');

INSERT INTO HESOLUONG

VALUES(1,'NV01',1.92),

(2,'NV02',2.34),

(3,'NV01',2.67),

(4,'NV01',1.86),

(5,'NV01',2.86),
(6,'NV01',3.00),

(7,'NV01',3.11),

(8,'NV01',2.56),

(9,'NV01',2.78),

(10,'NV01',2.94),

(11,'NV01',1.73),

(12,'NV01',1.82),

(13,'NV01',1.58),

(14,'NV01',1.52),

(15,'NV01',1.75),

(16,'NV01',1.59);

INSERT INTO QUYTHUONG (MAQT, DANHMUC, TONGTIEN)

VALUES ('QT01', 'Danh mục 1', 10000),

('QT02', 'Danh mục 2', 20000),

('QT03', 'Danh mục 3', 30000),

('QT04', 'Danh mục 4', 40000),

('QT05', 'Danh mục 5', 50000);

------ TRIGGER----
1.DELIMITER //

CREATE TRIGGER TIENtHUONG

AFTER INSERT ON CT_THUONG

FOR EACH ROW

BEGIN

INSERT INTO CT_THUONG(MATHUONG, MANV, SOTIEN)

VALUES (NEW.MATHUONG, 'NV01', 200000);

END;

//

DELIMITER ;

2. DELIMITER //

CREATE TRIGGER CAPNHATTHUONG

AFTER UPDATE ON CT_THUONG

FOR EACH ROW

BEGIN

IF NEW.MANV = 'NV02' THEN

UPDATE CT_THUONG SET SOTIEN = SOTIEN + 500000 WHERE MANV =


'NV02';

END IF;

END;

//
DELIMITER ;

3.

DELIMITER //

CREATE TRIGGER AwardAnyBonus

AFTER INSERT ON CT_THUONG

FOR EACH ROW

BEGIN

INSERT INTO CT_THUONG(MATHUONG, MANV, SOTIEN, MAQT)

VALUES (NEW.MATHUONG, 'NV02', NEW.SOTIEN, 'QT01');

END;

//

DELIMITER ;

4.DELIMITER //

CREATE TRIGGER DeleteBonus

AFTER DELETE ON CT_THUONG


FOR EACH ROW

BEGIN

DELETE FROM CT_THUONG WHERE MANV = 'NV01';

END;

//

DELIMITER ;

5.

DELIMITER //

CREATE TRIGGER CheckBonus

BEFORE INSERT ON CT_THUONG

FOR EACH ROW

BEGIN

DECLARE total_salary FLOAT;

SELECT SUM(SOTIEN) INTO total_salary FROM HESOLUONG;

IF NEW.SOTIEN > total_salary THEN

SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'LUONG VUOT GIOI


HAN';
ELSE

INSERT INTO CT_THUONG(MATHUONG, MANV, SOTIEN)

VALUES (NEW.MATHUONG, 'NV05', NEW.SOTIEN);

END IF;

END;

DELIMITER ;

You might also like