SQL2005 庫級觸發器的運用

2021-04-27 23:22:41 字數 2008 閱讀 5727

版本號: 2009-5-20

作 者 : 叮叮貓

起作用 只針對對資料的內錶的增加 刪除修改

但是當你對資料庫內資料的操作 是不能進行捕獲的

----------------------------*/

use testdb

go use [testdb]

gocreate table [databaselog] --建立一張表進行查詢

([posttime] datetime,

[databaseuser] xml,

[event] xml,

[schema] xml,

[object] xml,

[tsql] xml,

[xmlevent] xml)go

set ansi_nulls on

goset quoted_identifier on

gocreate trigger [ddldatabasetriggerlog]

on database

for ddl_database_level_events    --資料庫級的觸發器

as begin

set nocount on;

declare @data xml;

declare @schema sysname;

declare @object sysname;

declare @eventtype sysname;

set @data = eventdata();

set @eventtype = @data.value('(/event_instance/eventtype)[1]', 'sysname');

set @schema = @data.value('(/event_instance/schemaname)[1]', 'sysname');

set @object = @data.value('(/event_instance/objectname)[1]', 'sysname')

if @object is not null

print '  ' + @eventtype + ' - ' + @schema + '.' + @object;

else

print '  ' + @eventtype + ' - ' + @schema;

if @eventtype is null

print convert(nvarchar(max), @data);

insert [dbo].[databaselog]

([posttime],

[databaseuser],

[event],

[schema],

[object],

[tsql],

[xmlevent]

) values

(getdate(),

convert(sysname, current_user),

convert(sysname,@eventtype),

convert(sysname, @schema),

convert(sysname, @object),

@data.value('(/event_instance/tsqlcommand)[1]', 'nvarchar(max)'),

@data

);end;

goset ansi_nulls off

goset quoted_identifier off

go ------------------------測試-------------------------------

create table testtabel

(id int

)insert into testtabel values(111)

update testtabel set id=333

drop table testtabel

select * from [databaselog]

SQL2005觸發器寫法

set ansi nulls on set quoted identifier on goalter trigger tr crm projecttransfer update 開始建立 用creat on dbo crm projecttransfer 在crm projecttransfer表中...

SQL2005觸發器和儲存過程

實現效果 在表 中插入資料時,響應觸發器在另外乙個表插入資料 sql命令 insert into myreport id,myname,mynum values 40 小麥 20 sql 觸發器create trigger insertdatanow on dbo myreport forinser...

資料庫觸發器的運用

觸發器分為行級觸發和語句觸發。行級觸發每影響一行執行一行。語句觸發執行玩語句後觸發一次,不管這條語句會影響多少行,都只觸發一次。預設是語句觸發。其語法規則為 create or replace trigger after before instand of insert orupdate of co...