使用SQL Adapter多次轮询相同记录 [英] Issue polling same record multiple times using SQL Adapter

查看:149
本文介绍了使用SQL Adapter多次轮询相同记录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个问题是使用SQL Adapter多次轮询同一条记录。我使用以下声明:
$


UPDATE TOP(1)[MyDb]。[dbo]。[MyTable] SET status = 1 WHERE status = 0;

SELECT TOP(1)[MyDataField] FROM [MyDb]。[dbo]。[MyTable] WHERE status = 1;

UPDATE TOP(1)[MyDb]。[dbo ]。[MyTable] SET状态= 2; 
$


所有记录从0开始,然后状态设置为1,选择该记录然后更新为2.问题是第一条记录经历了整个轮询场景并被设置为2.其他记录保持为1,由于某种原因,BT只需
保持循环前几个记录。感谢任何帮助。

I have an issue polling the same record multiple times using SQL Adapter. I am using the following statement:

UPDATE TOP(1) [MyDb].[dbo].[MyTable] SET status = 1 WHERE status = 0;
SELECT TOP(1) [MyDataField] FROM [MyDb].[dbo].[MyTable] WHERE status = 1;
UPDATE TOP(1) [MyDb].[dbo].[MyTable] SET status = 2; 

All records start out at 0, then the status gets set to 1, that record is selected then updated to 2. The problem is that the very first record goes through the entire polling scenarios and gets set to 2. The other records stay at 1 and for some reason BT just keeps looping through the first couple of records. Any assistance is appreciated thanks.

推荐答案

尝试将其拆分为oracle适配器的3个语句,并将FOR Update子句放在select语句中:

Try to split it into 3 statements for oracle adapter and put the FOR Update clause in the select statement:

PolledDataAvailableStatement :

SELECT COUNT(*)FROM [MyDb]。[dbo]。[MyTable] WHERE status = 0;

SELECT COUNT(*) FROM [MyDb].[dbo].[MyTable] WHERE status = 0;

PollingStatement:

PollingStatement:

SELECT TOP(1)[MyDataField] FROM [MyDb]。[dbo]。[MyTable] FOR UPDATE
WHERE status = 0 ;

SELECT TOP(1) [MyDataField] FROM [MyDb].[dbo].[MyTable] FOR UPDATE WHERE status = 0 ;

PostPollStatement:

PostPollStatement:

UPDATE TOP(1)[MyDb]。[dbo]。[MyTable] SET status = 2 WHERE status = 0;

UPDATE TOP(1) [MyDb].[dbo].[MyTable] SET status = 2 WHERE status = 0;


这篇关于使用SQL Adapter多次轮询相同记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆