In 12C, when a column is defined as "invisible," the SQL statement without direct access to the column is unable to see the "invisible column", and the statement that explicitly references the "invisible column" can access and manipulate the column.
When creating table, create VIEW, ALTER VIEW, ALTER TABLE, you can create an invisible column.
For example, the following scenario is not available for "invisible columns":
• Use wildcard statements, such as: SELECT * from TabName
desc command in sql*plus
Type of "%rowtype" in pl/sql
INSERT INTO SELECT * Statement
Test script:
Sql>drop table Hasinvisiblecolumn; SQL>drop table Needsinvisiblecolumn; SQL>CREATE TABLE Hasinvisiblecolumn (ID number,goodbye_column number invisible); SQL>CREATE TABLE Needsinvisiblecolumn (ID number,goodbye_column number); SQL>ALTER TABLE Needsinvisiblecolumn Modify (Goodbye_column invisible); SQL>SelectOwner,table_name,column_name,hidden_column fromDba_tab_colswherehidden_column='YES'and owner='SCOTT'; OWNER table_name column_name HID------------------------------ ------------------------------ ------------------------------ ---SCOTT hasinvisiblecolumn Goodbye_column Yesscott Needsinvisiblecolumn Goodbye_column Yessql>
Oracle 12C--Invisible Columns