版本號: 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...