English 中文(简体)
优先行动——任何陷阱?
原标题:SQL priority queue operation - any pitfalls?

我有一个优先事项表,可以简明扼要地代表:

CREATE TABLE test (
  id int PRIMARY KEY,
  priority int,
  status int
)

<代码>优先权/代码>为优先权(最低为一)和<代码>status为项目状态(0 即为科索沃检索)。 任务是以最优先的方式收回该要素并重新确定其地位,因此,该守则类似于这一条(假编码):

 try = 0;
 while(try++ < max_tries) {
   result = query("SELECT id FROM test WHERE status=0 ORDER BY priority LIMIT 0,1");
   if(result not empty) {
      /* found a row, try to update */
      result2 = query("UPDATE test SET status=1 WHERE id={result[id]} AND status=0");
      if(affected_rows(result2) > 0) {
         /* if update worked fine, we can use this ID */
         return result[id];
      }
      /* otherwise try again */
 }
 return NULL;

该守则应在任何Sql数据库(目前的要求是Mysql、Oracle、服务器和DB2,但可能更多)上运行(如不同的LMIT syntax)。 我知道,所有必要的行文都支持更新的“受影响行文”。 这种做法的任何潜在问题或陷阱? 如果是,为什么要使用上述表格?

最佳回答

列入清单的SlectT/UPDATE组合似乎与UPDATE s WHERE条款一道解决了矛盾问题。 然而,如果能够接受的话,我会倾向于一种储存的程序:根据 s味,所储存的胎盘可以摆脱与原子的“维持......在INTO...”的一致问题。

Regarding the states, if they are something like:

  • 0 "okay to retrieve"
  • 1 "in process"
  • 2 "complete"

当时,国家充当了锁。 如果这一过程在国家从0到1的变化之后死亡,但在实际处理工作之前就会出现问题:在清理工作之前,记录可以保持锁定和未经处理。 另一种做法是,为锁定单列一个时间段。 然后,询问包括一个过滤器,即“WHERE现在()——时间分配”和“NVL(时间段,时间的开始)”和锁定,办法是确定目前()的锁定时间,而不是依靠确定地位标准。 这样,在合理等待(停工)之后,锁可自动失效,而下个加工商可再次获得该物品。 不需要清理工作。

任何饥饿的机会,如果低优先工作可能得不到解决?

是否需要增加附加命令? 如果这些物品都属于同一优先事项,则首先处理的事项(纤维、纤维)?

我猜测,如果这种单壳的例行运行有多种情况,那么多份托盘可能同时处理,处理顺序不一定是连续的(处理程序1涉及项目1,处理2涉及项目2,处理2完成项目2,处理1完成项目1,因此,希望是oka,否则,锁定需要检查没有其他进展。

我也看不出需要获得选举资格。

问题回答

暂无回答




相关问题
SQL SubQuery getting particular column

I noticed that there were some threads with similar questions, and I did look through them but did not really get a convincing answer. Here s my question: The subquery below returns a Table with 3 ...

难以执行 REGEXP_SUBSTR

I m 查询Oracle 10g。 我有两张表格(样本数据见下文)。 i m 试图提取一些领域

SQL Query Shortcuts

What are some cool SQL shorthands that you know of? For example, something I learned today is you can specify to group by an index: SELECT col1, col2 FROM table GROUP BY 2 This will group by col2

PHP array callback functions for cleaning output

I have an array of output from a database. I am wondering what the cleanest way to filter the values is example array Array ( [0] => Array ( [title] => title 1 ...

OracleParameter and DBNull.Value

we have a table in an Oracle Database which contains a column with the type Char(3 Byte). Now we use a parameterized sql to select some rows with a DBNull.Value and it doesn t work: OracleCommand ...

Running numbers in SQL

I have a SQL-statement like this: SELECT name FROM users WHERE deleted = 0; How can i create a result set with a running number in the first row? So the result would look like this: 1 Name_1 2 ...

How to get SQL queries for each user where env is production

I’m developing an application dedicated to generate statistical reports, I would like that user after saving their stat report they save sql queries too. To do that I wrote the following module: ...

热门标签