Truyen2U.Net quay lại rồi đây! Các bạn truy cập Truyen2U.Com. 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: Truyen2U.Com

Tags: #asas