如果SQL数据已更改,请在.NET应用程序中通知

时间:2017-01-26 20:35:05

标签: c# .net sql-server tsql sqldependency

我有两张桌子。表A包含每个更改状态的主要数据,表B包含详细数据。

表A
| ID |姓名|
| 1 |房子|
| 2 |树|
| 3 |车|

表B
| ID | FK | DateTime |颜色|类型|
| 1 | 1 | 2017-26-01T13:00:00 |红色|平房|
| 2 | 2 | 2017-26-01T13:05:00 |布朗|橡树|
| 3 | 1 | 2017-26-01T13:10:00 |绿色|平房|
| 4 | 3 | 2017-26-01T13:15:00 |黄色|智能|
| 5 | 1 | 2017-26-01T13:20:00 |白色|平房|
| 6 | 3 | 2017-26-01T13:25:00 |黑色|智能|

观看结果 | ID |名称| DateTime |颜色|类型|
| 1 |房子| 2017-26-01T13:20:00 |白色|平房|
| 2 |树| 2017-26-01T13:05:00 |布朗|橡树|
| 3 |车| 2017-26-01T13:25:00 |黑色|智能|

表A中实体的当前状态由表B中具有最年轻时间戳的记录描述。

现在,如果实体获得新状态(表B中的新记录)或创建新实体(表A和B中的新记录),我希望自己是无效的,即它看起来像。

观看的新结果
| ID |名称| DateTime |颜色|类型|
| 1 |房子| 2017-26-01T13:20:00 |白色|平房|
| 2 |树| 2017-26-01T13:05:00 |布朗|橡树|
| 3 |车| 2017-26-01T19:25:00 |银|智能|
| 4 |狗| 2017-26-01T20:25:00 |白/黑|贵宾犬|

使用SqlDependency,无法收到包含GROUP BY MAX聚合,窗口函数或TOP子句的语句的通知。所以我不知道如何获得实体的最后一个细节数据。

是否有可能为此要求创建声明,或者在更改此结果后是否有其他方式通知?

1 个答案:

答案 0 :(得分:0)

您可以在CLR

中创建和使用SQL触发器

此处 - SQL Trigger CLR