sql server 之触发器篇 ----通过触发器实现对表进行数据插入时,更新当前插入的记录

本文详细介绍了SQL触发器的基本用法,包括触发器的创建、删除和修改,并通过实战案例展示了如何在表插入操作时更新当前记录。适用于希望深入理解并应用触发器功能的数据库开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、触发器的基本用法

--触发器的创建
create trigger trigger_name  --创建触发器trigger_name为触发器名称
          on {table_name | view_name} --表示给表或者视图创建触发器
         {for | After | Instead of }  --- for 和after表示表或者视图执行完增、删、改之后才会触发,Instead of表示执行sql语句之前触发
         [ insert, update,delete ] --设置监测表执行何种状态触发,例如insert 表示执行插入操作,才会触发
         as
         sql_statement  --设置触发器需要执行的sql 语句
--触发器的删除
drop trigger trigger_name
--触发器的修改
  alter trigger trigger_name
        on {table_name | view_name}
        {for | After | Instead of }
       [ insert, update,delete ]
       as
        sql_statement



二、 触发器实战操作---当表执行插入操作,更新当前插入的记录

--创建触发器  检查student表是否存在插入数据
create trigger insert_student
on student
for insert
as 
declare @StudentName nvarchar(50), 
@ProjectName nvarchar(50),
@ClassName nvarchar(50),
@Month nvarchar(50),
@Score nvarchar(50), 
@StudentID int,
@num
select @StudentID = StudentID from inserted;--取出当前学生表ID
select @Month = Month from inserted; --取出当前插入数据的月份数据
select @StudentName = StudentName from inserted; --取出当前插入数据的学生姓名
select @ProjectName = ProjectName from inserted; --取出当前插入数据的课程名称
select @ClassName  =ClassName  from inserted; --取出当前插入数据的班级名称
select @num=COUNT(*)
from student
where Month = convert(varchar(7), DATEADD(MM,-1,@Month+'-01'), 121)
and StudentName = @StudentName and ProjectName = @ProjectName
and ClassName = @ClassName 
if(@num='1')
 begin
    select @Score = Score
        from student
        where Month = convert(varchar(7), DATEADD(MM,-1,@Month+'-01'), 121)
        and StudentName= @StudentName and ProjectName = @ProjectName and ClassName = @ClassName
 end;
update student set Score = @Score
where StudentID = @StudentID

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值