欢迎来到天天文库
浏览记录
ID:51694455
大小:38.45 KB
页数:2页
时间:2020-03-15
《SQL游标及触发器实例.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、SQLCodeDeclare@barCodevarchar(50)--声明变量用于存放游标结果DECLARECsrNameCURSORFOR--声明游标selectbarCodefromeachBook--游标数据来源BEGINOPENCsrName--打开游标FETCHFROMCURSUBOKINTO@barCode--获得来源的一行记录放入变量WHILE@@FETCH_STATUS=0BEGIN-----------------------------------------------------针对每个结果做的操作print@barcode-----
2、-----------------------------------------------------------------------EndFETCHNEXTFROMCsrNameINTO@barCode--处理下一行数据CLOSECsrName--游标用完了要关掉END总结:一般sql语句是面向集合的,游标是面向集合里面的行的,相当于获取一行数据->处理->获得下一行数据->处理这样一个循环。能不用游标就尽量不要用游标,性能很烂--两种触发器,after为表sql语句执行之后操作,INSTEADOF为之前操作createtriggertgr_nam
3、e--创建触发器onclasses--在classes表上forinsert--当classes表插入数据是触发as里面的操作(for有after默认值,所以是sql语句执行完了执行)--,有insert、update、delete三种操作类型。asdeclare@idint;--定义变量用来临时存放数据select@id=idfrominserted;--在inserted表中查询已经插入记录信息,update就有个updated表,deleted就是deleted表print'刚刚插入的记录的ID是'+@id;GO12345678910111213141
4、5161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960createtriggertgr_name--创建触发器onclasses--在classes表上INSTEADOFinsert--Insteadof表示把原来表的操作替换为as定义的操作,用途是不让插入语句直接操作,而用触发器来代替操作asIFNOTEXISTS(SELECT*FROM学生表WHERE学号=(SELECT学号FROMINSERTED))BEGINROLLBACK
5、TRANSACTIONPRINT'要处理记录的学号不存在!'ENDELSEBEGININSERTINTO计select*frominsertedPRINT'已经成功处理记录!'ENDgo总结:触发器就是定义一段sql语句,执行了某个sql语句数据库就会自动执行触发器定义的sql语句
此文档下载收益归作者所有