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

一、触发器的基本用法

--触发器的创建
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

 

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server触发器是一种特殊类型的存储过程,它会在指定的表上发生特定事件自动执行。当表上发生更新操作,可以通过触发器更新数据触发器通常与INSERT、UPDATE和DELETE语句一起使用。当这些语句被执行触发器会自动调用并执行相关的操作。 在创建触发器,需要指定触发器要绑定到的表以及要触发的事件类型(INSERT、UPDATE、DELETE)。然后,可以编写触发器的主体部分,该部分包含在触发器被调用要执行的SQL语句。 当触发器绑定的表上发生与触发器事件类型匹配的操作触发器会自动执行。在执行过程中,可以使用内置的Inserted和Deleted表来引用被修改的数据。Inserted表包含插入更新操作所添加或修改的行,而Deleted表包含删除或更新操作所删除或修改的行。 通过在触发器的主体部分编写更新操作的SQL语句,可以实现对表数据更新。这些更新可以是根据触发器事件导致的数据更改,也可以是根据其他表或计算逻辑生成的数据。 使用触发器更新数据的好处是,在数据变更自动执行相关操作,而无需手动干预。这可以保证数据的一致性和完整性,并减少人为错误的可能性。 需要注意的是,使用触发器更新数据,应谨慎操作,避免造成循环触发和性能问题。同触发器的相关操作应经过充分的测试和验证,确保其正常运行并达到预期的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值