从SQL Server表中连续获取每个插入的流

时间:2019-06-13 11:18:10

标签: c# sql-server

我想监视SQL Server表中的插入。就像表(userData)中的两列UserID和Activity一样,以便在对该表进行插入时,我立即获得插入并传递给C#的值。

我想使用每个插入进行比较,例如将每个插入与某个值进行比较并对其进行操作。

PS。我知道如何使用C#从SQL Server获取数据并将数据插入SQL Server表。但是不知道如何实时地实现这一目标,从而对他们做出决定。

3 个答案:

答案 0 :(得分:2)

您可以使用SqlDependency类并使用它的OnChange事件。浏览链接的MSDN文档,以查看有关如何操作的示例。

dependency.OnChange+=new
           OnChangeEventHandler(OnDependencyChange);

答案 1 :(得分:0)

创建插入触发器

    CREATE TRIGGER [dbo].[userDataInsert]
    ON [dbo].[userData]
    FOR INSERT
    AS
    BEGIN
    SET NOCOUNT ON

    select * 
        from    inserted

   -- do whatever you need with inserted


    END

答案 2 :(得分:0)

使用情况还可以查看 SqlTableDependency 。它是一个c#组件,当记录更改时引发事件。您可以在https://github.com/christiandelbianco/monitor-table-change-with-sqltabledependency

中找到更多详细信息

SqlTableDependency 是一个高级C#组件,用于审核,监视和接收有关SQL Server记录表更改的通知。对于任何记录表更改,作为插入,更新或删除操作,包含更改记录值的通知将传递到SqlTableDependency。该通知包含插入,更新或删除记录值。

enter image description here

表记录跟踪更改系统的优点是避免选择检索更新的表记录,因为更新的表值记录是通过通知传递的。