假设我有下表:
CREATE or replace TABLE t (id INT, content STRING, rowid INT);
INSERT INTO t VALUES (42, 'hello', 5), (43, 'world', 5);
如何获取数据库中的rowid
伪列和实际列?rowid
例如,做类似的事情:
select id, content, rowid, ?rowid-pseudocolumn?
from t;
参考: https: //docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns008.htm
另外,一般来说,如果存在“影子列”,如果存在同名用户列,是否有任何程序可以检索该列?
任何用作对象标识符的非法关键字或对象标识符中的非法字符如果用双引号括起来都可以起作用,但
ROWID
不允许全部大写。但是,您可以将其设为小写:但请注意,将 rowid 存储为永久列值通常是一个非常糟糕的主意,因此这不应该经常出现(如果有的话)。而且,如果存在这样做的合法情况,那么最好简单地重命名列以避免以不同的方式对待它(例如
ROW_ID
,或者如果只是一个与 Oracle 的 rowid 无关的数字,则完全不同以避免混淆)。尝试构建此类表时,您应该会收到无效标识符错误或类似的保留字错误。