一、保证数据完整性的触发器
现在需要如果删除71号的话,把下面的成绩也删除
CREATE TRIGGER DELETE_SM
ON student for delete as
begin declare @Sno nvarchar(50)
select @Sno=sno from deleted
DELETE FROM sc
WHERE Sno=@Sno
end
当执行删除语句时
delete from student where sno='71'
发现下面的表中的71号的记录已经删除了。
二、利用触发器做复制操作
先使用下面语句做复制表操作
select * into student1 from student 这样就存在了一个表与之student一样的表student1
原表存在的话这样用:
insert into a select * from b
原表不存在的话这样用:
select * into a from b
开始的student,student1表如图
其触发器代码如下
create trigger student_Ins
on student
after insert
as
begin declare @Sno varchar(9)
select @Sno=sno from inserted
insert into student1
select * from student
where Sno=@sno
end
往其中一个表中添加一条数据
查看student和student1表
发现两个表数据都添加了一条
三、利用触发器修改不合法的数据
把教授的工资如果插入时是小于4000的话默认值设置为4000
create trigger teacher_income
on T_teacher after insert
as
begin
declare @T_No nvarchar(50)
declare @T_Titles nvarchar(50)
declare @T_Wage nvarchar(50)
select @T_No=T_No,@T_Titles=T_Titles,@T_Wage=T_Wage from inserted
if(@T_Titles='教授')and (@T_Wage<4000)
update T_Teacher
set T_Wage=4000
where T_No=@T_No
end
insert into T_teacher
values ('1006','李占朋','男','教授',1000)
效果图为
发小效果达到了。。。。。