通过 ROWID 删除

Deleting by ROWID

我想运行这个查询。

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

但是我得到这个错误:

SQL.sql: Error (2,15): ORA-01410: invalid ROWID

我进了GC_CLIENTS

ID      NUMBER      NAME
14519   0000017690  VILLAVINE

如果我的 ID 正确,我不知道有什么问题。 顺便说一句,我正在使用一个序列,我不想用 WHERE ID = '14519' 删除它。

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;

ROWID 是一个伪列,returns 行的地址。

不想按Id删除可以试试这个

delete from A006873.GC_CLIENTS
WHERE ROWID in (select rowid from A006873.GC_CLIENTS where id = '14519');