Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
Oracle中的每条记录是否都有唯一的id_Oracle_Jdbc - Fatal编程技术网

Oracle中的每条记录是否都有唯一的id

Oracle中的每条记录是否都有唯一的id,oracle,jdbc,Oracle,Jdbc,在我的应用程序中,我创建了一个列,其序列为我添加的每个记录都有唯一的id,我怀疑oracle是否会为表中更新的每个记录创建唯一的行号,如果是,那么如何访问该行号,如 SELECT row-number from table where employee_name='name'; 这里我想得到oracle创建的唯一行号 我在网上搜索过,但没有得到正确的信息Oracle为每一行维护一个ROWID;然而,在我看来,在用户编写的代码中使用ROWID既糟糕又危险。ROWID仅保证在单个事务的持续时间内保

在我的应用程序中,我创建了一个列,其序列为我添加的每个记录都有唯一的id,我怀疑oracle是否会为表中更新的每个记录创建唯一的行号,如果是,那么如何访问该行号,如

SELECT row-number from table where employee_name='name';
这里我想得到oracle创建的唯一行号


我在网上搜索过,但没有得到正确的信息

Oracle为每一行维护一个ROWID;然而,在我看来,在用户编写的代码中使用ROWID既糟糕又危险。ROWID仅保证在单个事务的持续时间内保持不变。ROWID不能保证永远不变,数据库可以在确定需要更改时更改它。如果您的数据不提供唯一且不变的值或值组合,我强烈建议您学习如何创建使用序列和触发器自动设置的人工键。我相信12c提供了自动增量列,如果您使用的是最新版本的Oracle,则可以使用这些列


共享和享受。

Oracle为每一行维护一个ROWID;然而,在我看来,在用户编写的代码中使用ROWID既糟糕又危险。ROWID仅保证在单个事务的持续时间内保持不变。ROWID不能保证永远不变,数据库可以在确定需要更改时更改它。如果您的数据不提供唯一且不变的值或值组合,我强烈建议您学习如何创建使用序列和触发器自动设置的人工键。我相信12c提供了自动增量列,如果您使用的是最新版本的Oracle,则可以使用这些列


共享和享受。

Oracle中有两个唯一标识符,分别命名为ROWNUM和ROWID。您可以通过以下方式使用它们:-

SELECT ROWNUM 
FROM table 
WHERE employee_name = 'name';

你可以进一步了解他们

罗努姆-


Rowid-

Oracle中有两个唯一标识符,分别命名为ROWNUM和Rowid。您可以通过以下方式使用它们:-

SELECT ROWNUM 
FROM table 
WHERE employee_name = 'name';

你可以进一步了解他们

罗努姆-



Rowid-

你为什么需要这个?使用主键。这就是它的用途:唯一标识行。谢谢…我可以,但我必须通过连接到任何oracle数据库从ui执行crud操作,因此我无法为所有表创建主键,因此即使是表也可能没有主键我必须实现这一点,所以我觉得oracle内部应该为每个记录设置一个rownum],以便允许我们从ui中删除记录,我们可以访问该行号吗。。。我怀疑rowid是否存在,但这与您/您在进行CRUD操作时的前端有何关系,我无法理解;如果有重复的行,如何区分哪些行需要更新/删除?如果需要更新与该条件匹配的所有行,则rowid为。。。嗯,不相干。哦,给定的行不能保证在其生存期内保持相同的rowid。
rowid
是您唯一可以使用的。我对这个问题的理解是:除了主键的存在外,我希望有一个唯一的数字。怎么弄到的?这将假定您的主键不是数字,并且出于某种原因,您想要的是数字,而不是字符串或数字值。请确认一下
ROWID实际上是一个自动存在的列,是唯一的,但不是数字。此外,它也不是很容易阅读。这可能是故意的,就好像——如果您的数据模型设计正确的话——任何最终用户都不应该从任何表中读取Rowid。它是为DBA设计的。为什么需要它?使用主键。这就是它的用途:唯一标识行。谢谢…我可以,但我必须通过连接到任何oracle数据库从ui执行crud操作,因此我无法为所有表创建主键,因此即使是表也可能没有主键我必须实现这一点,所以我觉得oracle内部应该为每个记录设置一个rownum],以便允许我们从ui中删除记录,我们可以访问该行号吗。。。我怀疑rowid是否存在,但这与您/您在进行CRUD操作时的前端有何关系,我无法理解;如果有重复的行,如何区分哪些行需要更新/删除?如果需要更新与该条件匹配的所有行,则rowid为。。。嗯,不相干。哦,给定的行不能保证在其生存期内保持相同的rowid。
rowid
是您唯一可以使用的。我对这个问题的理解是:除了主键的存在外,我希望有一个唯一的数字。怎么弄到的?这将假定您的主键不是数字,并且出于某种原因,您想要的是数字,而不是字符串或数字值。请确认一下
ROWID实际上是一个自动存在的列,是唯一的,但不是数字。此外,它也不是很容易阅读。这可能是故意的,就好像——如果您的数据模型设计正确的话——任何最终用户都不应该从任何表中读取Rowid。它是为DBA目的而设计的。我尝试过rownum用于任何查询,它只返回1,当我使用rowid时,它返回一些字母顺序,如AAAD6UAAEAAOAOTAAE。
rownum
不是“唯一”标识符。它是在检索期间生成的,以后不能用于
更新
。我可以使用rowid作为唯一标识符吗@一匹没有名字的马如果你想要一个唯一的标识符,最好使用序列。阅读更多-那么rowid绝对是一个独特的字母数字组合。在整个事务过程中,它将保持不变。我对任何查询都尝试了rownum,它只返回1,当我使用rowid时,它返回一些字母顺序,如aaad6uaaeaaoaotaae。
rownum
不是“唯一”标识符。它是在检索过程中生成的,以后不能用于
更新
。我可以将rowid用作唯一的