易截截图软件、单文件、免安装、纯绿色、仅160KB

SQLServer中对所有的用户表生成触发器

测试的时候比较重要,我们可以知道当前交易影响了哪些表
--用于记录用户在当前表上什么时候、做的什么操作:update、insert、delete
create table TriggerRecord
(
 operdt datetime, --触发时间
 opertp varchar(10), --操作类型:update、insert、delete
 opertb varchar(50) --表名
)
--这个表于用保存生成的触发器语句,在过程中循环执行
--因为Sqlserver不允许在一个批次同时执行多条create trigger语句
create table T(sqlTrigger varchar(500))
--循环执行存于表中触发器的存储过程
create proc loopExecTrigger
as
begin
 declare @sql varchar(500)
 declare cur cursor for select sqlTrigger from T
 open cur
 fetch cur into @sql
 while @@fetch_status=0
 begin
  execute(@sql)
  fetch cur into @sql
 end
 close cur
 deallocate cur
 delete T
end
--用于生成插入语句的触发器,并将触发器语句保存到表中
select 'insert into T values(''create trigger T_'+name+' on '+name+' for insert as insert into TriggerRecord values(getdate(),''''insert'''','''''+name+''''');'')' from sysobjects where type='U' and name not in('T','TriggerRecord')
--将以上生成的语句拷贝出来执行
--用于生成更新语句的触发器,并将触发器语句保存到表中
select 'insert into T values(''create trigger T_'+name+'_U on '+name+' for update as insert into TriggerRecord values(getdate(),''''update'''','''''+name+''''');'')' from sysobjects where type='U' and name not in('T','TriggerRecord')
--将以上生成的语句拷贝出来执行
--用于生成删除语句的触发器,并将触发器语句保存到表中
select 'insert into T values(''create trigger T_'+name+'_D on '+name+' for delete as insert into TriggerRecord values(getdate(),''''delete'''','''''+name+''''');'')' from sysobjects where type='U' and name not in('T','TriggerRecord')
--将以上生成的语句拷贝出来执行
--执行通过上面语句生成的语句后,再执行存储生成触发器的存储过程
exec loopExecTrigger
--生成删除全部以T开头的触发器的语句
select 'drop trigger '+name+';' from sysobjects where type='TR' and name l


相关文档:

sqlserver 性能优化--Join说明

由于工作需求,要对负责的产 品做点性能优化,在网上找到了相关的东西,拿 出来与大家分享:
看到很多朋友对数据库的理解、认识还是没有突破一个瓶颈,而这个瓶颈往往只是一层窗纸,越过了你将看到一个新世界。
04、05年做项目的时候,用SQL Server 2000,核心表(大部分使用频繁的关键功能每次都要用到)达到了800万数据 ......

java 调用通用存储过程(Sqlserver)


package com.wfy.system.dao;   
  
import java.sql.CallableStatement;   
import java.sql.Connection;   
import java.sql.ResultSet;   
import java.sql.SQLException;   
import java.sql.Types;    ......

SqlServer游标示例

declare @areaid varchar(100)
declare @areaname varchar(100)
declare Cur cursor  for
select code as areaID,[name] as areaName  from dbo.province
open Cur
Fetch next from Cur Into @areaid,@areaname
While @@fetch_status=0   
Begin
    print('insert into ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号