Professional Documents
Culture Documents
Baitap Trigger
Baitap Trigger
Baitap Trigger
I:Qun l{ hng ha
Cu 11:Ngy mua hng (NGHD) ca mt khch hng thnh vin
s ln hn hoc bng ngy khch hng ng k{ thnh vin (NGDK).
CREATE TRIGGER UPDATE_KH_C11 ON KHACHHANG FOR UPDATE AS DECLARE @NGDK SMALLDATETIME, @NGHD SMALLDATETIME SELECT FROM @NGDK=NGDK INSERTED
IF(@NGDK>ANY(SELECT NGHD FROM HOADON A, INSERTED I WHERE A.MAKH=I.MAKH)) BEGIN ROLLBACK TRAN PRINT 'ERROR!NGDK PHAI NHO HON NGHD' END ELSE PRINT' SUCCESSFUL' ------CREATE TRIGGER HD_C11 ON HOADON FOR INSERT,UPDATE AS DECLARE @NGDK SMALLDATETIME, @NGHD SMALLDATETIME SELECT @NGDK=NGDK,@NGHD=NGHD FROM INSERTED I, KHACHHANG A WHERE I.MAKH=A.MAKH IF @NGHD<@NGDK BEGIN ROLLBACK TRAN PRINT 'ERROR!NGHD PHAI LON HON NGDK' END ELSE PRINT' SUCCESSFUL'
Cu 12: Ngy bn hng (NGHD) ca mt nhn vin phi ln hn hoc bng ngy nhn vin vo lm
CREATE TRIGGER UPDATE_NV_C12 ON NHANVIEN FOR UPDATE AS DECLARE @NGVL SMALLDATETIME, @NGHD SMALLDATETIME SELECT FROM @NGVL=NGVL INSERTED
IF(@NGVL>ANY(SELECT NGHD FROM HOADON A, INSERTED I WHERE A.MANV=I.MANV)) BEGIN ROLLBACK TRAN PRINT 'ERROR!NGVL PHAI NHO HON NGHD' END ELSE PRINT' SUCCESSFUL' ------CREATE TRIGGER HD_C12 ON HOADON FOR INSERT,UPDATE AS DECLARE @NGVL SMALLDATETIME, @NGHD SMALLDATETIME SELECT @NGVL=NGVL,@NGHD=NGHD FROM INSERTED I, NHANVIEN A WHERE I.MANV=A.MANV IF @NGHD<@NGVL BEGIN ROLLBACK TRAN PRINT 'ERROR!NGHD PHAI LON HON NGVL' END ELSE PRINT' SUCCESSFUL'
@SL=COUNT(A.SOHD),@SOHD=D.SOHD
FROM DELETED D,CTHD A WHERE A.SOHD=D.SOHD GROUP BY D.SOHD IF(@SL<1) BEGIN DELETE FROM HOADON WHERE SOHD=@SOHD PRINT 'DA DELETE CTHD CUOI CUNG CUA HOADON TREN' END -----CREATE TRIGGER HOADON_C13 ON HOADON FOR INSERT AS DECLARE @SOHD INT SELECT FROM @SOHD=SOHD INSERTED
UPDATE CTHD SET MASP='NONE',SL=0 WHERE SOHD=@SOHD PRINT 'SUCCESSFUL! DE NGHI UPDATE LAI CTHD(MAC DINH:MASP="NONE", SL=0)'
MONEY,
SELECT @GIA=GIA,@SL=SL,@SOHD=SOHD FROM INSERTED A, SANPHAM B WHERE A.MASP=B.MASP HOADON TRIGIA=TRIGIA+@SL*@GIA PRINT'DA INSERT 1 CTHD VA UPDATE LAI TRIGIA CUA HOADON TUONG UNG' -------------CREATE TRIGGER DELETE_CTHD_C14 ON CTHD FOR DELETE AS DECLARE @SL INT, @GIA MONEY, @SOHD INT SELECT @GIA=GIA,@SL=SL,@SOHD=SOHD FROM DELETED A, SANPHAM B WHERE A.MASP=B.MASP HOADON TRIGIA=TRIGIA-@SL*@GIA PRINT'DA DELETE 1 CTHD VA UPDATE LAI TRIGIA CUA HOADON TUONG UNG' ------------------CREATE TRIGGER UPDATE_CTHD_C14 ON CTHD FOR UPDATE AS DECLARE @SL_CU INT, @SL_MOI INT, @GIA_CU MONEY, @GIA_MOI MONEY, @SOHD_CU INT, @SOHD_MOI INT SELECT @GIA_CU=GIA,@SL_CU=SL,@SOHD_CU=SOHD FROM DELETED A, SANPHAM B WHERE A.MASP=B.MASP SELECT @GIA_MOI=GIA,@SL_MOI=SL,@SOHD_MOI=SOHD FROM INSERTED A, SANPHAM B WHERE A.MASP=B.MASP IF(@SOHD_CU=@SOHD_MOI) BEGIN UPDATE HOADON SET TRIGIA=TRIGIA+@SL_MOI*@GIA_MOI-@SL_CU*@GIA_CU WHERE SOHD=@SOHD_CU END ELSE BEGIN UPDATE HOADON SET TRIGIA=TRIGIA-@SL_CU*@GIA_CU WHERE SOHD=@SOHD_CU UPDATE SET UPDATE SET
UPDATE HOADON SET TRIGIA=TRIGIA+@SL_MOI*@GIA_MOI WHERE SOHD=@SOHD_MOI END PRINT'DA UPDATE 1 CTHD VA UPDATE LAI TRIGIA CUA HOADON TUONG UNG' ------------------CREATE TRIGGER UPDATE_HOADON_C14 ON HOADON FOR INSERT AS DECLARE @GIA_CU MONEY, @GIA_MOI MONEY, @SOHD INT, @SL INT SELECT FROM SELECT FROM @GIA_CU=GIA DELETED @GIA_MOI=GIA INSERTED
SELECT @SOHD=SOHD,@SL=SL FROM INSERTED A, CTHD B WHERE A.MASP=B.MASP UPDATE HOADON SET TRIGIA=TRIGIA+@SL*(@GIA_MOI-@GIA_CU) WHERE SOHD=@SOHD PRINT'DA UPDATE 1 HOADON VOI TRIGIA KHONG THAY DOI'
Cu 15: Doanh s ca mt khch hng l tng tr gi cc ha n m khch hng thnh vin mua.
CREATE TRIGGER INSERT_KHACHHANG_C15 ON KHACHHANG FOR INSERT AS DECLARE @MAKH CHAR(4) SELECT FROM @MAKH=MAKH INSERTED
UPDATE KHACHHANG SET DOANHSO=0 WHERE MAKH=@MAKH PRINT 'DA INSERT 1 KHACHHANG MOI VOI DOANHSO BAN DAU LA 0 VND' ---------------CREATE TRIGGER UPDATE_KHACHHANG_C15 ON KHACHHANG FOR UPDATE AS DECLARE @MAKH CHAR(4), @DOANHSO_CU MONEY SELECT @MAKH=MAKH
UPDATE KHACHHANG SET DOANHSO=@DOANHSO_CU WHERE MAKH=@MAKH PRINT 'DA UPDATE 1 KHACHHANG' ---------------CREATE TRIGGER INSERT_HOADON_C15 ON HOADON FOR INSERT AS DECLARE @TRIGIA MONEY, @MAKH CHAR(4) SELECT FROM @MAKH=MAKH,@TRIGIA=TRIGIA INSERTED
UPDATE KHACHHANG SET DOANHSO=DOANHSO+@TRIGIA WHERE MAKH=@MAKH PRINT 'DA INSERT 1 HODON MOI VA UPDATE LAI DOANHSO CUA KH CO SOHD TREN' ----------CREATE TRIGGER DELETE_HOADON_C15 ON HOADON FOR DELETE AS DECLARE @TRIGIA MONEY, @MAKH CHAR(4) SELECT FROM @MAKH=MAKH,@TRIGIA=TRIGIA DELETED
UPDATE KHACHHANG SET DOANHSO=DOANHSO-@TRIGIA WHERE MAKH=@MAKH PRINT 'DA DELETE 1 HODON MOI VA UPDATE LAI DOANHSO CUA KH CO SOHD TREN' --------------CREATE TRIGGER UPDATE_HOADON_C15 ON HOADON FOR UPDATE AS DECLARE @TRIGIA_CU MONEY, @TRIGIA_MOI MONEY, @MAKH CHAR(4) SELECT FROM SELECT FROM @MAKH=MAKH,@TRIGIA_MOI=TRIGIA INSERTED @MAKH=MAKH,@TRIGIA_CU=TRIGIA DELETED
UPDATE KHACHHANG SET DOANHSO=DOANHSO+@TRIGIA_MOI-@TRIGIA_CU WHERE MAKH=@MAKH PRINT 'DA UPDATE 1 HOADON MOI VA UPDATE LAI DOANHSO CUA KH CO SOHD TREN'
SELECT @MALOP1=A.MALOP,@MALOP2=B.MALOP FROM INSERTED A, HOCVIEN B WHERE A.TRGLOP=B.MAHV IF(@MALOP1<>@MALOP2) BEGIN ROLLBACK TRAN PRINT'TRGLOP CUA 1 LOP PHAI LA HOCVIEN CUA LOP DO' END ELSE PRINT 'SUCCESSFUL'
Cu 10: Trng khoa phi l gio vin thuc khoa v c hc v TS hoc PTS.
CREATE TRIGGER UPDATE_KHOA_C10 ON KHOA FOR UPDATE AS DECLARE @MAKHOA1 varchar(4), @MAKHOA2 varchar(4), @HOCVI varchar(10) SELECT @MAKHOA1=A.MAKHOA,@MAKHOA2=B.MAKHOA,@HOCVI=HOCVI FROM INSERTED A,GIAOVIEN B WHERE A.TRGKHOA=B.MAGV IF(@MAKHOA1<>@MAKHOA2) BEGIN ROLLBACK TRAN PRINT'ERROR! TRGKHOA PHAI LA GIAOVIEN THUOC KHOA' END ELSE
IF(@HOCVI<>'TS' AND @HOCVI<>'PTS') BEGIN ROLLBACK TRAN PRINT 'ERROR! TRGKHOA PHAI CO HOCVI="TS" HOAC HOCVI="PTS"' END ELSE PRINT 'SUCCESSFUL' ----------CREATE TRIGGER UPDATE_GIAOVIEN_C10 ON GIAOVIEN FOR UPDATE AS DECLARE @MAKHOA1 varchar(4), @MAKHOA2 varchar(4), @HOCVI varchar(10) SELECT @MAKHOA1=A.MAKHOA,@MAKHOA2=B.MAKHOA,@HOCVI=HOCVI FROM INSERTED A,KHOA B WHERE B.TRGKHOA=A.MAGV IF(@MAKHOA1<>@MAKHOA2) BEGIN ROLLBACK TRAN PRINT'ERROR! TRGKHOA PHAI LA GIAOVIEN THUOC KHOA' END ELSE IF(@HOCVI<>'TS' AND @HOCVI<>'PTS') BEGIN ROLLBACK TRAN PRINT 'ERROR! TRGKHOA PHAI CO HOCVI="TS" HOAC HOCVI="PTS"' END ELSE PRINT 'SUCCESSFUL'
PRINT 'ERROR!LOP CUA HV CHUA HOC XONG MON NAY' END -------ALTER TRIGGER UPDATE_GIANGDAY_C15 ON GIANGDAY FOR UPDATE AS DECLARE @NGTHI SMALLDATETIME, @DENNGAY SMALLDATETIME SELECT FROM @DENNGAY=DENNGAY INSERTED
IF(@DENNGAY<ALL (SELECT NGTHI FROM INSERTED A,HOCVIEN B, KETQUATHI C WHERE A.MALOP=B.MALOP AND B.MAHV=C.MAHV AND A.MAMH=C.MAMH)) PRINT 'SUCCESSFUL!THOA YEU CAU DENNGAY<NGTHI' ELSE BEGIN ROLLBACK TRAN PRINT 'ERROR!ANH HUONG DEN KETQUATHI, NGAY_KET_THUC PHAI TRUOC HON NGAYTHI.' END
Cu 16: Mi hc kz ca mt nm hc, mt lp ch c hc ti a 3 mn
CREATE TRIGGER INSERT_UPDATE_GIANGDAY_C16 ON GIANGDAY FOR INSERT, UPDATE AS DECLARE @SL_MONHOC INT SELECT @SL_MONHOC=COUNT(A.MAMH) FROM GIANGDAY A, INSERTED B WHERE A.MALOP=B.MALOP AND A.HOCKY=B.HOCKY AND A.NAM=B.NAM IF(@SL_MONHOC=4) BEGIN ROLLBACK TRAN PRINT 'ERROR!LOP NAY DA HOC HON 3 MON TRONG CUNG HOCKY, NAM' END
MALOP
INSERTED) ---------DROP TRIGGER UPDATE_LOP_C17 ON LOP FOR UPDATE AS UPDATE LOP SET SISO=(SELECT SISO FROM DELETED) WHERE MALOP=(SELECT MALOP FROM INSERTED) -------------CREATE TRIGGER INSERT_HOCVIEN_C17 ON HOCVIEN FOR INSERT AS UPDATE LOP SET SISO=SISO+1 WHERE MALOP=(SELECT MALOP FROM INSERTED) -----------ALTER TRIGGER DELETE_HOCVIEN_C17 ON HOCVIEN FOR DELETE AS DECLARE @MAHV CHAR(5), @TRGLOP CHAR(5), @MALOP CHAR(3) SELECT @MAHV=MAHV, @TRGLOP=TRGLOP, @MALOP=A.MALOP FROM DELETED A, LOP B WHERE A.MALOP=B.MALOP UPDATE LOP SET SISO=SISO-1 WHERE MALOP=@MALOP ------------CREATE TRIGGER UPDATE_HOCVIEN_C17 ON HOCVIEN FOR UPDATE AS UPDATE LOP SET SISO=SISO+1 WHERE MALOP=(SELECT MALOP FROM INSERTED) UPDATE LOP SET SISO=SISO-1 WHERE MALOP=(SELECT MALOP FROM DELETED)
Cu 18: Trong quan h DIEUKIEN gi tr ca thuc tnh MAMH v MAMH_TRUOC trong cng mt b khng
IF((@MAMH=@MAMH_TRUOC)OR (@MAMH IN (SELECT MAMH_TRUOC FROM DIEUKIEN WHERE MAMH=@MAMH_TRUOC))OR (@MAMH_TRUOC IN (SELECT MAMH FROM DIEUKIEN WHERE MAMH_TRUOC=@MAMH))) BEGIN ROLLBACK TRAN PRINT 'DIEUKIEN KO HOP LE' END
SELECT FROM
@LANTHI=LANTHI INSERTED
IF(@LANTHI>1) BEGIN SELECT @DIEM=B.DIEM FROM INSERTED A,KETQUATHI B WHERE A.MAHV=B.MAHV AND A.MAMH=B.MAMH AND B.LANTHI=@LANTHI-1 IF(@DIEM>=5) BEGIN ROLLBACK TRAN PRINT 'HV NAY DA THI DAT' END END DELETE FROM KETQUATHI WHERE LANTHI>@LANTHI
Cu 24: Gio vin ch c phn cng dy nhng mn thuc khoa gio vin ph trch.
DROP TRIGGER INSERT_GIANGDAY_C24 ON GIANGDAY FOR INSERT, UPDATE AS DECLARE @MAKHOA1 CHAR(4), @MAKHOA2 CHAR(4) SELECT @MAKHOA1=B.MAKHOA, @MAKHOA2=C.MAKHOA FROM INSERTED A, MONHOC B, GIAOVIEN C WHERE A.MAMH=B.MAMH AND A.MAGV=C.MAGV IF(@MAKHOA1<>@MAKHOA2) BEGIN ROLLBACK TRAN PRINT 'ERROR!MAMH PHAI THUOC KHOA GIAO VIEN PHU TRACH' END ELSE PRINT 'SUCCESSFUL'