觸發器與儲存過程的相互呼叫

2021-08-25 20:55:01 字數 2141 閱讀 9229

觸發器與儲存過程互調

--觸發器如何呼叫儲存過程

create trigger test on table

for insert

asexec 儲存過程名

go

--儲存過程如何呼叫觸發器

create proc test

asupdate 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

asbegin

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

觸發器與儲存過程的相互呼叫

觸發器與儲存過程互調 觸發器如何呼叫儲存過程 create trigger test on table for insert asexec 儲存過程名 go 儲存過程如何呼叫觸發器 create proc test asupdate table set insert table select del...

MySQL儲存過程相互呼叫

什麼都不說了上 方式一 第乙個儲存過程 test1,引數如下 in user name varchar 50 out uid bigint 20 begin routine body goes here.declare u id bigint 20 default11 select user id ...

觸發器 儲存過程

1 為productsales資料庫中的產品表建立乙個名為update pno的update觸發器,該觸發器的作用是禁止更新產品表中的 productname 欄位的內容。並用update語句修改產品表中第一條記錄為 1 hp1500 印表機 2000 要求顯示 不能修改產品名稱 的警告資訊。cre...