首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

批量新增触发器的方法

2012-08-25 
求一个批量新增触发器的方法有以下两个表XXX_MasterXXX_Detail两个表都有 no,flag这个两个字段no是两个表

求一个批量新增触发器的方法
有以下两个表
XXX_Master
XXX_Detail
两个表都有 no,flag这个两个字段
no是两个表主从表的关联值
当XXX_Master的flag字段值被改动时,XXX_Detail的flag的字段值都相应改动(no字段是主从表关联字段)

现在想给数据库中所有的表实现: 所有表名称以_Master结尾的的表增加一个这样的触发器(如果用触发器不合理,还可以用什么方法实现类似的功能)
应该怎么做?

[解决办法]
给你个提示吧,这个脚步是根据你的需求大概写的,没测试过,你可以根据这个去调整

SQL code
Create Procedure usp_CreateTriggerAsBegin  Declare @Tbl Table (TblName Varchar(100))    --获取表命  Insert Into @Tbl   Select SUBSTRING(Name, 1, CHARINDEX('_', Name) - 1) From Sysobjects Where Name Like '%_Master'  Declare @tName varchar(100), @TB_Master varchar(128), @TB_Detail Varchar(128), @SQL Varchar(8000)  Declare tItem cursor for    SELECT TblName From @Tbl  Open tItem    FETCH NEXT FROM tItem into @tName  WHILE (@@FETCH_STATUS <> -1) and  (@@FETCH_STATUS <> -2)  BEGIN      Set @TB_Master = @tName + '_Master'    Set @TB_Detail = @tName + '_Detail'    Set @SQL = 'Create Trigger tru_'+@TB_Master+'_Flag        On '+@TB_Master+'         for Update        As         if Update(Flag)                   begin          Update A            Set A.Flag = B.Flag            From '+@TB_Detail+' A ,Inserted B            Where A.NO=B.No        end  '    Print @SQL        Exec(@SQL)        FETCH NEXT FROM tItem into @tName  END  CLOSE tItem  DEALLOCATE tItem End 

热点排行