SQL Server: Trigger

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
select*from Student;

--Tạo 1 trigger thông báo insert thành công:

--create trigger tg_report on Student for insert as

--begin

-- print N'Đã insert thành công';

--end;

--Tạo 1 trigger kiểm soát tuổi của sinh viên khi chèn

--bản ghi vào bảng Student với điều kiện tuổi phải >=18.

create trigger tg_checkAge on Student for insert as

begin

if(select age from inserted)<18

begin

print N'Tuổi phải từ 18';

rollback tran;

end

end;


select*from Student;

insert Student(Name,Age,Status) values

('AB12',18,'Normal'),

('CD34',19,'Young'),

('EF56',99,'Old');

--Trigger Delete:

create trigger tg_Delete on Student for delete as

begin

declare @name varchar(20);

set @name=(select name from deleted);

print N'Đã xóa bản ghi có tên '+@name;

end;


delete from Student where RN=7;


--Trigger update:

create trigger tg_Update on Student for update as

begin

if(select age from inserted)<18

begin

print N'Không được sửa để tuổi <18'

rollback tran

end

end;


update Student set Age=17 where RN=4;

select*from Student;


--Hàm update(tên_cột): Kiểm tra xem tên_cột có sự thay đổi

--dữ liệu không, nếu có thì trả về true, ngược lại trả về

--false

create trigger tg_check_update_name on Student for update as

begin

if UPDATE(name)

begin

print N'Không được thay đổi dữ liệu cột name'

rollback tran

end

end;


update Student set Name='XYZ' where RN=1;


--Tạo trigger After:

create trigger tg_after_delete on Student after delete as

begin

declare @number nchar;

select @number=COUNT(*) from deleted;

print N'Số lượng bản ghi đã xóa: '+@number;

end;


select*from Student;

delete from Student where RN in(15);

--Tạo trigger instead of:

select*from StudentTest;

insert StudentTest values(15,1,GETDATE(),9);

--Tạo trigger instead of để khi xóa bản ghi có rn=15

--ở bảng Student thì cũng xóa những bản ghi có rn=15

--ở bảng StudentTest:

create trigger tg_instead_of_delete on Student

instead of delete as

begin

delete from StudentTest where RN in(select RN from deleted);

delete from Student where RN in(select RN from deleted);

end;

delete from Student where RN in(15);

select*from Student;

select*from StudentTest;

--Tạo trigger instead of để khi sửa rn của bảng Student thì cũng

--sửa rn ở bảng StudentTest.

create trigger tg_instead_of_update on Student instead of update as

begin

alter table StudentTest drop constraint fk_RN;

set identity_insert Student on;

update Student set RN=(select RN from inserted) where RN=(select RN from deleted);

update StudentTest set RN=(select RN from inserted) where RN=(select RN from deleted);

alter table StudentTest add constraint fk_RN foreign key(rn) references Student(rn);

end;
» Tiếp: C2010G-SQL-Buổi 1
« Trước: View
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!