SQL Server触发器和事务用法详细说明
2022-11-12 09:41:34
内容摘要
这篇文章主要为大家详细介绍了SQL Server触发器和事务用法示例,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
本文实例讲述了SQL Server
文章正文
这篇文章主要为大家详细介绍了SQL Server触发器和事务用法示例,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
本文实例讲述了SQL Server触发器和事务用法。分享给大家供大家参考,具体如下:
新增和删除触发器
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <code> 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 </code> |
更新触发器和事务
事务主要用在数据的保护,在多表更新时,事务保存所有事务下的更新语句就不会提交,数据也就不能更新成功
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <code> 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 </code> |
存储过程
代码如下:
1 2 3 4 5 6 7 8 9 10 11 | <code> 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 </code> |
游标
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <code> 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 </code> |
视图
代码如下:
1 2 3 4 5 6 7 | <code> alter view CreateView as select qybh from CreateView go </code> |
定义方法
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <code> 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(... , ...) </code> |
定义表变量
代码如下:
1 2 3 4 5 6 7 | <code> declare @qybhTable table (id varchar(32),qybh varchar(30)) insert into @qybhTable select id,qybh from PJ_EnterpriseInput select * from @qybhTable </code> |
case when then 条件统计时的使用
代码如下:
1 2 3 4 5 6 7 8 9 | <code> 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 </code> |
希望本文所述对大家SQL Server数据库程序设计有所帮助。
注:关于SQL Server触发器和事务用法示例的内容就先介绍到这里,更多相关文章的可以留意
代码注释