我的数据库中有一个表总会莫名其妙的被插入数据,而且时间不定。
插入数据以后,等我需要正确执行存储过程插入数据时,因为时间相同,就无法插入了。
我有十个模块,不知是否是哪个模块中哪个操作不小心执行了存储过程。
事件探查器能否只监控一个存储过程的执行情况,或是一个表的改变情况?
插入数据以后,等我需要正确执行存储过程插入数据时,因为时间相同,就无法插入了。
我有十个模块,不知是否是哪个模块中哪个操作不小心执行了存储过程。
事件探查器能否只监控一个存储过程的执行情况,或是一个表的改变情况?
这样可以更好的保证数据的完整性。
能否简单说明一下!
例如:sql server
//--在查询分析器中如下
CREATE TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ]
{
{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS
[ { IF UPDATE ( column )
[ { AND | OR } UPDATE ( column ) ]
[ ...n ]
| IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
{ comparison_operator } column_bitmask [ ...n ]
} ]
sql_statement [ ...n ]
}
}
//例子
如果我想当插入表的某一个数据为1时则报错
create trigger youtriggername on youtable for insert
as
if inserted.youcolumn=1 //inserted为插入数据的临时表,sqlserver自己维护
begin
RAISERROR ('you altermessage', 16, 1)//抛出一个错误信息,回滚事务,信息可以返回前台
ROLLBACK TRANSACTION
end
//这样当数据库监测到你的youtable表中youcolumn的插入值为1就报错,并回滚事务。
//详细信息看sql server的帮助,很简单的
//不过也有数据库不支持触发器.比如 .mdb