按ROWID删除

时间:2015-05-14 15:29:28

标签: oracle rowid

我想运行此查询。

DELETE FROM A006873.GC_CLIENTS
WHERE ROWID = '14519';

但是我收到了这个错误:

  

SQL.sql:错误(2,15):ORA-01410:无效的ROWID

我进入了 GC_CLIENTS

ID      NUMBER      NAME
14519   0000017690  VILLAVINE

如果我的ID正确,我没有意识到出了什么问题。 我顺便使用了一个序列,我不想用WHERE ID = '14519'删除它。

2 个答案:

答案 0 :(得分:0)

ID = 14519不是ROWID。 ROWID是用于定位值的内部标识符

SQL> select rowid from t.d;

ROWID
------------------
AAAVqIAAEAAAAInAAA
AAAVqIAAEAAAAInAAB
AAAVqIAAEAAAAInAAC

SQL> delete from t.d where rowid = 'AAAVqIAAEAAAAInAAA';

1 row deleted.

SQL> select rowid from t.d;

ROWID
------------------
AAAVqIAAEAAAAInAAB
AAAVqIAAEAAAAInAAC

你想要的只是

DELETE FROM A006873.GC_CLIENTS
WHERE ID = 14519;

答案 1 :(得分:0)

ROWID是一个返回行地址的伪列。

如果您不想按ID

删除,可以尝试此操作
delete from A006873.GC_CLIENTS
WHERE ROWID in (select rowid from A006873.GC_CLIENTS where id = '14519');