oracle 12c中的隱含列

來源:互聯網
上載者:User

標籤:des   style   blog   color   使用   io   ar   for   div   


  Invisible Columns

使用select * from ,desc 等看不到該列,

DROP TABLE tab1 PURGE;CREATE TABLE tab1 (  id          NUMBER,  description VARCHAR2(50) INVISIBLE);DESC tab1; Name                                      Null?    Type ----------------------------------------- -------- ---------------------------- ID                                                 NUMBERSQL>INSERT INTO tab1 VALUES (1);COMMIT;SELECT * FROM tab1;        ID----------         1SQL>

 

在明確的指定它的名字進行查詢的時候仍然是可用的

INSERT INTO tab1 (id, description) VALUES (2, ‘TWO‘);COMMIT;SELECT id, descriptionFROM   tab1;        ID DESCRIPTION---------- --------------------------------------------------         1         2 TWOSQL>

 

下面關於隱含列的幾項內容

  • 虛擬列可以設成invisible
  • 一個表可以對隱含列就行分區,
  • 外部表格,表簇,暫存資料表中不能包含隱含列
  • 使用者自訂的類型不能包含隱含屬性
  • You can not make system generated hidden columns visible.
Invisible Columns and Column Ordering

隱含列不分配列的順序(colum_id),如果一個可見的列設為不可見,那麼這個列將放到最後一列

DROP TABLE tab1 PURGE;CREATE TABLE tab1 (  a NUMBER,  b NUMBER,  c NUMBER INVISIBLE);COLUMN column_name FORMAT A15SELECT column_id,       column_name,       hidden_columnFROM   user_tab_colsWHERE  table_name = ‘TAB1‘ORDER BY column_id; COLUMN_ID COLUMN_NAME     HID---------- --------------- ---         1 A               NO         2 B               NO           C               YESSQL> ALTER TABLE tab1 MODIFY b INVISIBLE;ALTER TABLE tab1 MODIFY c VISIBLE;SELECT column_id,       column_name,       hidden_columnFROM   user_tab_colsWHERE  table_name = ‘TAB1‘ORDER BY column_id; COLUMN_ID COLUMN_NAME     HID---------- --------------- ---         1 A               NO         2 C               NO           B               YESSQL>ALTER TABLE tab1 MODIFY b VISIBLE;SELECT column_id,       column_name,       hidden_columnFROM   user_tab_colsWHERE  table_name = ‘TAB1‘ORDER BY column_id; COLUMN_ID COLUMN_NAME     HID---------- --------------- ---         1 A               NO         2 C               NO         3 B               NOSQL>

 

強制類型Invisible Columns

隱含列的強制/可選等屬性仍然是有效,如下例:(隱含列的not null屬性仍然是生效的)

DROP TABLE tab1 PURGE;CREATE TABLE tab1 (  id          NUMBER NOT NULL,  description VARCHAR2(50) NOT NULL,  created_date DATE INVISIBLE NOT NULL);COLUMN column_name FORMAT A20SELECT column_id,       column_name,       nullable,       hidden_columnFROM   user_tab_colsWHERE  table_name = ‘TAB1‘ORDER BY column_id; COLUMN_ID COLUMN_NAME          N HID---------- -------------------- - ---         1 ID                   N NO         2 DESCRIPTION          N NO           CREATED_DATE         N YESSQL>INSERT INTO tab1 VALUES (1, ‘ONE‘);*ERROR at line 1:ORA-01400: cannot insert NULL into ("TEST"."TAB1"."CREATED_DATE")SQL>ALTER TABLE tab1 MODIFY created_date NULL;INSERT INTO tab1 VALUES (1, ‘ONE‘);1 row created.SQL>

 

oracle 12c中的隱含列

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.