加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLServer触发器的增删和更新操作如何实现

发布时间:2023-05-29 11:04:23 所属栏目:MsSql教程 来源:
导读:本文实例讲述了SQL Server触发器和事务用法。分享给大家供大家参考,具体如下:新增和删除触发器alter trigger tri_TC on t_cfor INSERT,deleteasbeginset XACT_ABORT ONdeclare @INSERTCOUNT int;declare @DELETECO

本文实例讲述了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

以上就是关于“SQLServer触发器的增删和更新操作怎么实现”的相关知识,感谢各位的阅读。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章