Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从表中选择一个随机行-DBMS_random.VALUE在从两个不同的用户执行时给出相同的行_Sql_Database_Oracle_Random - Fatal编程技术网

Sql 从表中选择一个随机行-DBMS_random.VALUE在从两个不同的用户执行时给出相同的行

Sql 从表中选择一个随机行-DBMS_random.VALUE在从两个不同的用户执行时给出相同的行,sql,database,oracle,random,Sql,Database,Oracle,Random,一个快速的帮助,伙计们! 我的应用程序需要从Oracle数据库中约200000行的表中随机获取一个值。多个用户可能同时使用该应用程序,因此目的是让所有用户每次单击按钮时都看到不同的值。一旦某行被使用,请将其标记为已使用,不要再次使用。 以下是我正在使用的查询示例: SELECT MY_COLUMN FROM ( SELECT MY_COLUMN

一个快速的帮助,伙计们! 我的应用程序需要从Oracle数据库中约200000行的表中随机获取一个值。多个用户可能同时使用该应用程序,因此目的是让所有用户每次单击按钮时都看到不同的值。一旦某行被使用,请将其标记为已使用,不要再次使用。 以下是我正在使用的查询示例:

        SELECT
           MY_COLUMN
        FROM
               ( SELECT
                        MY_COLUMN
                 FROM
                        MY_TABLE
                 WHERE
                       COLUMN_STATUS = 'Not used'
                 ORDER BY
                        DBMS_RANDOM.VALUE )
             WHERE
                 ROWNUM = 1;
当我在单个用户上使用时,它会工作,每次都会给我一个不同的值。但是我做了一个测试,我在两台不同的机器上用两个不同的用户登录,我同时点击了“按钮”,在两个用户上我得到了相同的值。我是不是遗漏了什么?这就是DBMS_RANDOM.VALUE的行为方式吗? 如果是,您有什么建议可以解决上述问题吗

谢谢,
我感谢你对人们的帮助

“我的表格”表中有多少行的列状态为“未使用”?行的总数(200k)是无关的,相关的是有多少行满足WHERE条件。例如,如果只有四行这样做,那么“随机”得到同一行的几率略高于4%。您是否能够复制您注意到的行为,或者它只发生一次?大约140000行未使用。不,这不是一次性事件。我能够重新创建它。这是在包中还是在其他PL/SQL代码中?还是剧本?我想到的唯一一件事是DBMS_随机包中的种子过程(或者可能是过时的初始化过程)在您共享的代码片段之前被调用。MY_表中有多少行的列状态为“Not used”(未使用)?行的总数(200k)是无关的,相关的是有多少行满足WHERE条件。例如,如果只有四行这样做,那么“随机”得到同一行的几率略高于4%。您是否能够复制您注意到的行为,或者它只发生一次?大约140000行未使用。不,这不是一次性事件。我能够重新创建它。这是在包中还是在其他PL/SQL代码中?还是剧本?我想到的唯一一件事是DBMS_随机包中的SEED过程(或者可能是过时的初始化过程)在您共享的代码片段之前被调用。