我正在尝试实现一个SqlDependancy来在对MySQL服务器数据库中的一个表进行更改时触发事件,但是当我通过SSMS对表进行更改时,事件似乎没有触发,为什么这可能是?
下面我的建议是与微软tuturiol内联:
for i in range(len(data)):
# do something
current_row = data.iloc[i,:]
row_minus1 = data.iloc[i-1,:]
row_minus2 = data.iloc[i-2,:]
row_minus3 = data.iloc[i-3,:]
row_minus4 = data.iloc[i-4,:]
if ((current_row['difference'] > 0) & (row_minus1['difference'] < 0)) &
(((row_minus1['tl'] > Upper) or (row_minus1['bl'] < Lower) )) or
((row_minus2['tl'] > Upper) or (row_minus2['bl'] < Lower) )) or
((row_minus3['tl'] > Upper) or (row_minus3['bl'] < Lower) )) or
((row_minus4['top_line'] > Upper) or (row_minus4['bl'] < Lower) ))) :
我确定了以下内容:
答案 0 :(得分:1)
使用SqlDependency
have a number of requirements进行查询。执行不符合这些要求的查询时,ChangeEventHandler
会立即触发Invalid
中的SqlNotificationEventArs.Info
。
在这种情况下,查询无效,因为表名不是模式限定的。指定一个由两部分组成的名称,以便查询对通知有效。此示例假定dbo架构:
string query = "SELECT AREA_ID, VEHICLE_COUNT, ADDED_ON FROM dbo.CAPACITY_LOG";
此更改应生成有效的SqlDependency
。请注意,当调用ChangeEventHander
时,正常模式是使用SqlDependency再次执行查询,这将获取最新数据并重新订阅更改通知。
答案 1 :(得分:0)
连接被丢弃,因此它停止接收来自数据库的输入。我在https://weblogs.asp.net/ricardoperes/broadcasting-database-changes-through-signalr处提供了可用的代码示例。