你的位置:首页 > 数据库

[数据库][笔记]触发器和游标


触发器

触发源:insert update delete

after:在触发源执行后执行触发器中的代码

instead of:在触发源执行前执行触发器的代码,同时触发源的操作被废弃

语法:

create trigger 触发器名

on 表名 after insert,update,delete--可以3个都写,也可以只写1个

as

begin

...

end

 

 

 游标

作用:可以逐条操作表中的数据

缺点:性能低,尽量不要使用

示例:为每个人的英语成绩加个随机数

--定义游标

declare s1 cursor for select Name,Gender,English from Table_1

--在访问游标中某行的数据时,需要声明变量

declare @sName nvarchar(50)

declare @sGender bit

declare @sEnglish nvarchar(10)

--打开游标

open s1

--通过游标从结果集中取数据。注意:每次取一行的值

fetch s1 into @sName,@sGender,@sEnglish

--这个全局变量的意思是:当fetch这行没有问题时,就等于

while(@@FETCH_STATUS=0)

begin

set @sEnglish=@sEnglish+RAND(100)

update Table_1 set English=@sEnglish where Name=@sName and Gender=@sGender

--再取,才能循环起来

fetch s1 into @sName,@sGender,@sEnglish

end

--关闭游标

close s1

--释放游标

deallocate s1