首页 > 资讯列表 > 编程/数据库 >> 数据库操作教程

SQLServer触发器和事务用法示例

数据库操作教程 2022-09-23 18:01:52 转载来源: 网络整理/侵权必删

本文实例讲述了SQLServer触发器和事务用法。分享给大家供大家参考,具体如下:新增和删除触发器altertriggertri_TCont_cforINSERT,deleteasbeginsetXACT_ABORTONdeclare@INSERTCOUNTint;declare@DELETECOUNTint;declare@UPDATECOUNTint;set@INSERTCOUNT=(selectCOUNT(*)frominserted);set@DELETECOUNT=(selectCOUNT(*)fromdeleted);set@UPDATECOUNT=()if(@INSERTCOUNT>0)begininsertintot_c2select*frominserted;endelseif(@DELETECOUNT>0)begindeletet_c2whereexists(selecttemp.cidfromdeletedtempwheretemp.cid=t_c2.cid);endend更新触发器和事务事务主要用在数据的保护,在多表更新时,事务保存所有事务下的更新语

本文实例讲述了SQL Server触发器事务用法。分享给大家供大家参考,具体如下:

新增和删除触发器

alter trigger tri_TC on t_c  for INSERT,deleteasbegin  set XACT_ABORT ON  declare @INSERTCOUNT int;  declare @DELETECOUNT int;  declare @UPDATECOUNT int;  set @INSERTCOUNT = (select COUNT(*) from inserted);  set @DELETECOUNT = (select COUNT(*) from deleted);  set @UPDATECOUNT = ()  if(@INSERTCOUNT > 0)  begin   insert into t_c2 select * from inserted;  end  else if(@DELETECOUNT > 0)  begin   delete t_c2 where exists(select temp.cid from deleted temp where temp.cid=t_c2.cid);  endend

更新触发器和事务

事务主要用在数据的保护,在多表更新时,事务保存所有事务下的更新语句就不会提交,数据也就不能更新成功

alter trigger tri_TC_Update on t_c  for updateasbegin  declare @delcount int;  set @delcount = (select count(*) from deleted);  if(@delcount > 0)  begin   begin transaction triUpdate --定义事务   declare @cname varchar(100);   select @cname = cname from inserted; --保存更新后的内容   update t_c2 set cname = @cname where cid = (select cid from deleted); --更新   if (@@error <> 0)   begin    rollback transaction triUpdate; --事务回滚   end   else   begin    commit transaction triUpdate;  --事务提交   end  endend

存储过程

if(exists(select name from sysobjects s where s.name='pro_fun' and s.type='p'))  drop procedure pro_fungo  create procedure pro_funas  select * from tablegoexec pro_fun

游标

declare @qybh varchar(10)declare cur cursor for  select distinct qybh from PJ_EnterpriseInputopen curfetch next from cur into @qybhwhile @@fetch_status = 0 begin  print(@qybh)  fetch next from cur into @qybh endclose curdeallocate cur

视图

alter view CreateViewas select qybh from CreateViewgo

定义方法

alter function funName(@str1 varchar(10),@str2 varchar(10))returns varchar(10)asbegin  declare @returnStr varchar(10)  set @returnStr = 'false'  if(@str1 > @str2)    set @returnStr = 'true'  return @returnStrendselect dbo.funName(... , ...)

定义表变量

declare @qybhTable table (id varchar(32),qybh varchar(30))insert into @qybhTableselect id,qybh from PJ_EnterpriseInputselect * from @qybhTable

case when then 条件统计时的使用

selectsum(case when z.watchName='注册监理工程师' then 1 else 0 end),sum(case when z.watchName='xinza' then 1 else 0 end),sum(case when z.watchName='监理员' then 1 else 0 end)from zu_corjl zright join zu_corjltemp t on t.corID=z.corID

希望本文所述对大家SQL Server数据库程序设计有所帮助。

标签: SQLServer 触发器 事务 用法 示例


声明:本文内容来源自网络,文字、图片等素材版权属于原作者,平台转载素材出于传递更多信息,文章内容仅供参考与学习,切勿作为商业目的使用。如果侵害了您的合法权益,请您及时与我们联系,我们会在第一时间进行处理!我们尊重版权,也致力于保护版权,站搜网感谢您的分享!

站长搜索

http://www.adminso.com

Copyright @ 2007~2024 All Rights Reserved.

Powered By 站长搜索

打开手机扫描上面的二维码打开手机版


使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

站长搜索目录系统技术支持