某个数据库中,如果某个表,有一个用户新增了一条数据,SQLSERVER有没有什么方法通知我们写的应用程序??就是让应用程序一直等待SQLSERVER发送消息,SQL表里如果有新数据插入,能立刻通知应用程序,从而告知用户。

解决方案 »

  1.   

    创建INSERT触发器,在触发器中发送消息.
      

  2.   

    create trigger trg_insert on table
    for insert
    as
    ----把127.0.0.0换成客户端的IP或计算机名
    exec master..xp_cmdshell 'net send 127.0.0.0  data has inserted'
    GO
    注意:客户端必须启用windows messager信使服务.只能用于windows2000及其之后,win9x不行.
      

  3.   

    --在SQL SERVER中环境
    --测试表
    CREATE TABLE T1(ID INT) 
    --插入触发器
    CREATE TRIGGER TEST
     ON T1
     FOR INSERT
     AS
    RAISERROR('您插入了一条数据',16, 1)
    --下面通过前端应用程序捕获异常,仅以DELPHI为例
    Begin
     With Adoquery1 do
      Begin
       Close;
       Sql.clear;
       Sql.text:='Insert t1 Select 2';
      End;
    try
     ADOQuery1.ExecSQL
    except
      on E: Exception do MessageBox(Self.Handle,Pchar(E.Message),Pchar('提示'),MB_OK);
    end;
    End;
    --注:用Try Except 来捕获,这时前端应用程序中会出现提示窗口,而数据则插入数据库中