如何检查列值的填充位置

How to check from where the column value is populating

我有 table TEST_ORD,其中我有列 ORD_DAYID,这是虚拟列。我想知道这个 coumn 中的值是从哪里以及如何填充的。因为我不能在插入语句中使用此列,因为它是虚拟列。

我尝试了以下查询,但它没有提供有关列中值的填充位置和方式的信息:

Select * from all_source where upper(TEST) like '%TEST_ORD_ID%';

用于生成虚拟列的表达式列在 [DBA|ALL|USER]_TAB_COLUMNS 视图的 DATA_DEFAULT 列中。

例如:

已创建 table,其中包含将根据定义填充的虚拟列。

CREATE drop TABLE virtab(
  id          NUMBER,
  first_name  VARCHAR2(10),
  last_name   VARCHAR2(10),
  salary      NUMBER(9,2),
  comm1       NUMBER(3),
  comm2       NUMBER(3),
  salary1     AS (ROUND(salary*(1+comm1/100),2)),
  salary2     NUMBER GENERATED ALWAYS AS (ROUND(salary*(1+comm2/100),2)) VIRTUAL,
  CONSTRAINT employees_pk PRIMARY KEY (id)
);

选择

select *  from DBA_TAB_COLUMNS where table_name = 'VIRTAB' and column_name = 'SALARY2'

输出:

SQL> select DATA_DEFAULT from DBA_TAB_COLUMNS where table_name = 'VIRTAB' and column_name = 'SALARY2';

DATA_DEFAULT
--------------------------------------------------------------------------------
ROUND("SALARY"*(1+"COMM2"/100),2)