最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

SQLServer触发器和事务用法示例

来源:动视网 责编:小采 时间:2020-11-09 07:01:18
文档

SQLServer触发器和事务用法示例

SQLServer触发器和事务用法示例:本文实例讲述了SQL Server触发器和事务用法。分享给大家供大家参考,具体如下: 新增和删除触发器 alter trigger tri_TC on t_c for INSERT,delete as begin set XACT_ABORT ON declare @INSERTCOUNT int; declare
推荐度:
导读SQLServer触发器和事务用法示例:本文实例讲述了SQL Server触发器和事务用法。分享给大家供大家参考,具体如下: 新增和删除触发器 alter trigger tri_TC on t_c for INSERT,delete as begin set XACT_ABORT ON declare @INSERTCOUNT int; declare


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

新增和删除触发器

alter trigger tri_TC on t_c
 for INSERT,delete
as
begin
 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);
 end
end

更新触发器和事务

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

alter trigger tri_TC_Update on t_c
 for update
as
begin
 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
 end
end

存储过程

if(exists(select name from sysobjects s where s.name='pro_fun' and s.type='p'))
 drop procedure pro_fun
go
 create procedure pro_fun
as
 select * from table
go
exec pro_fun

游标

declare @qybh varchar(10)
declare cur cursor for
 select distinct qybh from PJ_EnterpriseInput
open cur
fetch next from cur into @qybh
while @@fetch_status = 0
 begin
 print(@qybh)
 fetch next from cur into @qybh
 end
close cur
deallocate cur

视图

alter view CreateView
as
 select qybh from CreateView
go

定义方法

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

定义表变量

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

case when then 条件统计时的使用

select
sum(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 z
right join zu_corjltemp t on t.corID=z.corID

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

您可能感兴趣的文章:

  • MySQL中触发器的基础学习教程
  • 数据库触发器DB2和SqlServer有哪些区别
  • 深入浅析SQL Server 触发器
  • SqlServer触发器详解
  • MYSQL设置触发器权限问题的解决方法
  • mysql触发器(Trigger)简明总结和使用实例
  • sqlserver数据库使用存储过程和dbmail实现定时发送邮件
  • 使用sqlserver存储过程sp_send_dbmail发送邮件配置方法(图文)
  • sqlserver2008自动发送邮件
  • 通过sql存储过程发送邮件的方法
  • SQL server 表数据改变触发发送邮件的方法
  • 文档

    SQLServer触发器和事务用法示例

    SQLServer触发器和事务用法示例:本文实例讲述了SQL Server触发器和事务用法。分享给大家供大家参考,具体如下: 新增和删除触发器 alter trigger tri_TC on t_c for INSERT,delete as begin set XACT_ABORT ON declare @INSERTCOUNT int; declare
    推荐度:
    标签: sql 触发器 实例
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top