Chào các bạn! Vì nhiều lý do từ nay Truyen2U chính thức đổi tên là Truyen247.Pro. Mong các bạn tiếp tục ủng hộ truy cập tên miền mới này nhé! Mãi yêu... ♥

Trigger sql

--- tao trigger cho phep chen vao diem cao nhat

createtrigger trginsertDiem

on Diem

forinsert

as

declare @diemlan1 float

declare @masv int

declare @diemlan2 float

select @diemlan1=inserted.diemlan1,

@diemlan2=inserted.diemlan2,

@masv=inserted.masv

from inserted

if(@diemlan2>@diemlan1)

update diem

set diem.diem=@diemlan2

where masv=@masv

select*from diem

end

else

update diem

set diem.diem=@diemlan1

where masv=@masv

select*from diem

end

--- chen du lieu

alter trigger trginsertKem

on Kem

for insert

as

Declare @soluong int

select @soluong=inserted.soluong

from inserted

if (@soluong<0)

print 'ban gia tri nhap sai'

rollback transaction

end

else

print 'ban da nhap thanh cong'

G0

insert into kem

values(5,'kem trang tien 4',2000)

End

--tao trigger cho su kien chen dl <0 >10 bao loi

-- trong bang diem

CREATE TRIGGER trginsertDiem

ON Diem

For insert

as

DECLARE @Diem int

SELECT @Diem=inserted.Diem

FROM Inserted

IF (@Diem <0) or (@Diem >10)

print 'Sai gia tri diem'

Rollback transaction

end

else

Print 'qua trinh chen dl thanh cong'

end

--- nhap du lieu cho cac bang

--- 9 a - tao trigger de tat cac truong trong bang sv phai nhap

createtrigger trginsertSinhvien

on Sinhvien

forinsert

as

-- khai bao 5 bien luu tru

Declare @tensv varchar(20)

Declare @diachi varchar(50)

Declare @soDT varchar(10)

Declare @Khoa varchar(20)

Declare @lop varchar(10)

--- create trigger tr_hocbong on sinhvien

for insert, update

as

    if exists (select * from inserted WHERE Tinh not like 'TPHCM' and HocBong > 0)

            raiserror('Hoc bong chi ap dung o TPHCM',15,1);

            rollback tran

        end;

-- thu nghiem

exec sp_themsv @masv = '00004',

        @tensv = 'Nguyen Hong Phu', 

        @ngaysinh = '08/07/1990', 

        @gioitinh = '1',

        @diachi = '207/16',

        @tinh = 'HaNoi',

        @makhoa = 'CNTT',

        @hocbong = '20000'

update sinhvien set tinh = 'Ha Noi' where masv = '91002' 

create trigger tr_lanthi_insert on ketqua

for insert

as

    if (select count(*) as SoLT from ketqua as a, inserted as b 

                     where a.masv = b.masv 

                     and a.mamh = b.mamh

                     ) > 2

                raiserror('Sinh vien da thi 2 lan mon hoc nay',15,1);

                rollback tran;

            end; 

create trigger tr_lanthi_lan2 on ketqua

for insert,update

as 

    if exists (select * from inserted where lanthi =2)

        if not exists (select * from ketqua as a, inserted as b

                    where a.masv = b.masv

                        and a.mamh = b.mamh 

                        and a.lanthi = '1')

                raiserror('Chua co lan 1',15,1);

                rollback tran;

            end; 

create trigger tr_dtb_sv on Sinhvien

for update

    as 

       if update(DTB)

        if (select DTB from inserted) <>

            (select AVG(diem)

             from ketqua_ch as kq

             where kq.masv = (select masv from inserted) )

            raiserror('DTB phai bang TongDiem / SoMon da hoc',15,1);

            rollback

        end;

create trigger tr_dtb_kq on KetQua

for insert, update, delete

    as

        if update(diem) or not exists (select * from deleted)

                update sinhvien

                set DTB = (select AVG(diem)

                            from ketqua_ch as kq

                            where kq.masv = (select masv from inserted))

                where masv = (select masv from inserted)

            end;

        if  not exists (select * from inserted)

                update sinhvien

                set DTB = (select AVG(diem)

                            from ketqua_ch as kq

                            where kq.masv = (select masv from deleted))

                where masv = (select masv from deleted)

            end;

    end; 

create trigger tr_xeploai on sinhvien

for update

 as 

 if exists (select * from sinhvien as a, inserted as b

            where a.masv = b.masv

            and a.XL <>  case

                when a.dtb < 5.0 then 'Yeu'

                when a.dtb >= 5.0 and a.dtb < 6.5 then 'TB'

                when a.dtb >= 6.5 and a.dtb < 8.0 then 'Kha'

                when a.dtb >= 8.0 and a.dtb < 9.0 then 'Gioi'

                when a.dtb >= 9.0 and a.dtb <= 10 then 'Xuat sac'

            end)

            raiserror('Xep loai sinh vien khong theo chuan ',15,1);

            rollback

        end; 

--- Mã sinh viên phải tuân theo quy tắc sau: 1 ký tự đầu là ‘V’, 4 ký tự sau biểu thị số thứ tự.

create trigger tr_masv on Sinhvien

for insert, update

as

     if update(MaSV) or not exists (select * from deleted)

    if not exists(select * from inserted

                  where patindex('[V][0-9][0-9][0-9][0-9]',masv) > 0)  

            raiserror('Mã sinh viên phải tuân theo quy tắc sau: 1 ký tự đầu là ‘V’, 4 ký tự sau biểu thị số thứ tự',15,1);

            rollback

        end; 

-. Them moi nhan vien, kiem tra tuoi <=25 lam viec o Quan Ly

create trigger tr_tuoinv on nhanvien

for insert

    as

        if exists (select * from inserted as a, PHONGBAN as b

                    where a.PHG = b.MAPHG

                    and YEAR(GETDATE()) -  YEAR(NGSINH) <= 25

                    and TENPHG not like 'Quan ly')

                    raiserror('Nhan vien tuoi <=25 phai lam viec o phong Quan ly',15,1);

                    rollback tran;

                end;

drop trigger tr_tuoinv

-- test

INSERT INTO NHANVIEN VALUES ('NGUYEN','HONG','PHU','111','08/07/1990','Q9-TP.HCM','NAM',30000,'005',4)

delete from nhanvien where manv = 111

Bạn đang đọc truyện trên: Truyen247.Pro

Tags: #asas