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

更多相关文章

  1. MySQL系列多表连接查询92及99语法示例详解教程
  2. Andorid Dialog 示例【慢慢更新】
  3. Android(安卓)PureMVC
  4. Ubunu下搭建android NDK环境
  5. 自定义SeekBar主题
  6. android SQLite数据库基本操作示例
  7. android draw bitmap 示例代码
  8. Android启动时启动Activity 的定义的位置
  9. Android适配器之------BaseAdapter(例子)

随机推荐

  1. Android 仿 WP7 布局
  2. Android Services组件
  3. android帧动画
  4. Android Q 测试版
  5. android - BitmapRegionDecoder 翻译
  6. android TextSwitcher
  7. android sdk wenti
  8. Android Fastboot
  9. android scrollrefreshlist
  10. Android listView 一种常用布局