- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么我们基于表的列创建函数时,会在user_tab_cols中创建一个条目?
create table t1(a varchar2(100), b number);
select * from user_tab_cols where table_name = 'T1'; -- Two rows coming
create index idx1 on t1(upper(a));
select * from user_tab_cols where table_name = 'T1'; -- Three rows coming
将条目放入 user_tab_cols 的原因是什么?
最佳答案
额外的列是 virtual column Oracle 已添加以存储索引表达式的值。来自Oracle documentation :
Oracle Database represents the index expression as a virtual column
您可以在 SQL*Plus 中轻松验证额外的列是虚拟的。其实也是一个'隐藏'的列:
SQL> select column_name, hidden_column, virtual_column from user_tab_cols where table_name = 'T1';
COLUMN_NAME HID VIR
------------------------------ --- ---
A NO NO
B NO NO
SYS_NC00003$ YES YES
虚拟列的名称在您的机器上可能不同。
user_tab_columns
过滤掉隐藏的列,如 Oracle documentation for user_tab_cols
中所述.因此,如果您不想看到此列,您可以查询 user_tab_columns
而不是 user_tab_cols
:
SQL> select column_name from user_tab_columns where table_name = 'T1';
COLUMN_NAME
------------------------------
A
B
SQL>
关于oracle - 基于函数的索引和 user_tab_cols,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21366969/
当我们基于表的列创建函数时,为什么会在 user_tab_cols 中创建一个条目? create table t1(a varchar2(100), b number); select * fr
为什么我们基于表的列创建函数时,会在user_tab_cols中创建一个条目? create table t1(a varchar2(100), b number); select * from
我有一个表 TABLE_X,它有多个以 M_ 字符开头的列,需要删除。我决定使用以下 PLSQL 代码删除近 100 个以 M_ 字符开头的列。动态sql和游标的运用好不好?可以更好吗?我不知道更简单
我是一名优秀的程序员,十分优秀!