By Do Trung Duc|
15:19 02/12/2020|
SQL Server/MySQL
[Share Code] Tìm hiểu index, trigger trong lập trình SQL Server
select * from Student
create clustered index ci_firstname on Student (firstname)
create nonclustered index ci_lastname on Student (lastname)
create nonclustered index ci_address on Student (address)
-- Trigger
select * from Student2
alter table Student2
add gender nvarchar(16)
update Student2 set gender = 'Nam'
alter table Student2
add constraint check_gender check (gender in ('Nam', 'Nu'))
alter table Student2
drop constraint check_gender
--- Yeu cau: gender => Nam, Nu
--- Cai dat dieu kien gi de gender chi nhan gia tri Nam, Nu => ko insert cac gia tri khac
insert into Student2(rollno, firstname, lastname, address, phone, email, age, gender)
values
('R004', 'ABC', 'OKOK', 'Ha Noi', '12321312', 'okok123@gmail.com', 55, 'Xin Chao')
delete from Student2 where rollno = 'R003'
-- đề cập tới table => insert, update, delete => Mỗi một lệnh có thể gắn với 1 trigger
---- trigger insert vao bang Student2
create trigger trigger_insert_student2 on Student2
for insert
as
begin
-- lenh kiem tra
if (select gender from inserted) <> 'Nam' and (select gender from inserted) <> 'Nu'
begin
print N'Yeu cau du lieu nhap vao Nam hoac Nu'
rollback transaction
end
end
drop trigger trigger_insert_student2
----- trigger update cho bang Student2
select * from Student2
update Student2 set gender = 'XinChao' where rollno = 'R003'
update Student2 set phone = '11111111' where rollno = 'R003'
create trigger trigger_update_student2 on Student2
for update
as
begin
if (select gender from inserted) <> 'Nam' and (select gender from inserted) <> 'Nu'
begin
print N'Yeu cau du lieu nhap vao Nam hoac Nu'
rollback transaction
end
end
select * from Student2
--- Ko cho phep xoa phan tu rollno = R000
create trigger trigger_delete_student2 on Student2
for delete
as
begin
if (select rollno from deleted) = 'R000'
begin
print N'Khong dc xoa phan tu R000'
rollback transaction
end
end
delete from Student2 where rollno = 'R000'
delete from Student2 where rollno = 'R003'
--- Kiem soat du lieu : category, news
select * from category
select * from news
--- delete from news where id_category = 1
delete from category where id = 1
create trigger trigger_instead_of_delete_category on category
instead of delete
as
begin
delete from news where id_category in (select id from deleted)
delete from category where id in (select id from deleted)
end
Tags: