小閣飛空 一池碧映垂楊路 絳云深處 聽盡瀟瀟雨
          At times , people will simply not come through for you in the way you need.Forgive them and move on.
          posts - 212,comments - 87,trackbacks - 0
          --觸發器如何調用存儲過程
          create trigger test on table
          for insert
          as
          exec 存儲過程名
          go

          --存儲過程如何調用觸發器
          create proc test
          as
          update table set ...
          insert table select ...
          delete table ...

          --我們有一個table如下,需要跟蹤修改對該表的insert/update/delete操作:

          create table testMonitor(c1 int, c2 char(10))


          --創建的輔助表如下:

          create table tempLog_testMonitor(
          rowID bigint identity(1,1),
          hostname nchar(128),
          program_name nchar(128),
          nt_domain nchar(128),
          nt_username nchar(128),
          net_address nchar(12),
          loginame nchar(128),
          login_time datetime,
          EventType nvarchar(30),
          parameters int,
          EventInfo nvarchar(255)
          )

          --創建的trigger如下:

          create trigger trg_testMonitor
          on testMonitor
          for insert,update,delete
          as
          begin

          ??????????? declare @hostname nchar(128)
          ??????????? declare @program_name nchar(128)?
          ??????????? declare @nt_domain nchar(128)?
          ??????????? declare @nt_username nchar(128)?
          ??????????? declare @net_address nchar(12)
          ??????????? declare @loginame nchar(128)
          ??????????? declare @login_time datetime
          ??????????? declare @rowID bigint

          ????????????
          ??????????? insert into tempLog_testMonitor(EventType,parameters,EventInfo)
          ??????????? exec ('dbcc inputbuffer(@@spid)')
          ??????????? select @rowID = scope_identity()??????????????????
          ??????????? select? @hostname = hostname,
          ??????????????????????? @program_name = program_name,
          ??????????????????????? @nt_domain = nt_domain,
          ??????????????????????? @nt_username = nt_username,
          ??????????????????????? @net_address = net_address,
          ??????????????????????? @loginame = loginame,
          ??????????????????????? @login_time = login_time
          ??????????? from master..sysprocesses where spid = @@spid

          ??????????? update tempLog_testMonitor set?
          ??????????? hostname = @hostname,
          ??????????? program_name = @program_name,
          ??????????? nt_domain = @nt_domain,
          ??????????? nt_username = @nt_username,
          ??????????? net_address = @net_address,
          ??????????? loginame = @loginame,
          ??????????? login_time = @login_time
          ??????????? where rowID = @rowID
          end

          --如果我們執行如下的語句:

          insert into testmonitor values(1,'aaa')
          update testmonitor set c2 = 'bbb'
          delete from testmonitor

          --您再查詢輔助表,就能看到對表修改的相關信息:

          select * from tempLog_testMonitor

          posted on 2006-12-19 08:57 瀟瀟雨 閱讀(235) 評論(0)  編輯  收藏 所屬分類: Database
          主站蜘蛛池模板: 岳池县| 泾源县| 洞头县| 斗六市| 蒙阴县| 乐东| 绥德县| 长武县| 黄骅市| 无棣县| 杂多县| 浠水县| 屯昌县| 东丽区| 丽水市| 荣成市| 金山区| 镇雄县| 左权县| 阿巴嘎旗| 岳普湖县| 健康| 库尔勒市| 镇远县| 岑巩县| 林周县| 旺苍县| 芦溪县| 康马县| 宜宾市| 灵川县| 固阳县| 斗六市| 神农架林区| 葵青区| 桐城市| 大渡口区| 泰安市| 乌审旗| 岳西县| 安陆市|