Oracle中的每条记录都会有唯一的ID

时间:2015-02-02 11:32:20

标签: oracle jdbc

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

SELECT row-number from table where employee_name='name';

这里我希望获得由oracle创建的唯一行号,

我在网上搜索过但没有得到适当的信息

2 个答案:

答案 0 :(得分:2)

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

分享并享受。

答案 1 :(得分:1)

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

SELECT ROWNUM 
FROM table 
WHERE employee_name = 'name';

SELECT ROWID
FROM table 
WHERE employee_name = 'name';

您可以进一步了解它们。

Rownum - http://docs.oracle.com/cd/B12037_01/server.101/b10759/pseudocolumns008.htm

Rowid - http://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns008.htm