我的数据库中有一个表总会莫名其妙的被插入数据,而且时间不定。
插入数据以后,等我需要正确执行存储过程插入数据时,因为时间相同,就无法插入了。
我有十个模块,不知是否是哪个模块中哪个操作不小心执行了存储过程。
事件探查器能否只监控一个存储过程的执行情况,或是一个表的改变情况?

解决方案 »

  1.   

    同意 unsigned(僵哥(当程序语言成为普及的第三语言之后……)) 
    这样可以更好的保证数据的完整性。
      

  2.   

    如何使用触发器啊,看了SQL的帮助还不是很明白。
    能否简单说明一下!
      

  3.   

    触发器是在数据库中执行的.
    例如: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