小閣飛空 一池碧映垂楊路 絳云深處 聽盡瀟瀟雨
          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
          --觸發(fā)器如何調(diào)用存儲(chǔ)過程
          create trigger test on table
          for insert
          as
          exec 存儲(chǔ)過程名
          go

          --存儲(chǔ)過程如何調(diào)用觸發(fā)器
          create proc test
          as
          update table set ...
          insert table select ...
          delete table ...

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

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


          --創(chuàng)建的輔助表如下:

          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)
          )

          --創(chuàng)建的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

          --如果我們執(zhí)行如下的語句:

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

          --您再查詢輔助表,就能看到對(duì)表修改的相關(guān)信息:

          select * from tempLog_testMonitor

          posted on 2006-12-19 08:57 瀟瀟雨 閱讀(235) 評(píng)論(0)  編輯  收藏 所屬分類: Database
          主站蜘蛛池模板: 镇赉县| 闻喜县| 日照市| 宁海县| 化州市| 北碚区| 宁夏| 丽水市| 昭觉县| 双鸭山市| 海丰县| 宁武县| 枝江市| 宁明县| 周至县| 黑水县| 平乐县| 远安县| 通化县| 满城县| 泊头市| 台东市| 三都| 遵化市| 华蓥市| 内黄县| 宣武区| 宣汉县| 讷河市| 西吉县| 炉霍县| 黄山市| 改则县| 江源县| 子洲县| 邮箱| 宝应县| 洪江市| 三穗县| 基隆市| 南汇区|