CREATE SCHEMA 陳述式

CREATE SCHEMA 陳述式定義綱目。 也可以建立部分物件,並授與陳述式內物件的專用權。

呼叫

此陳述式可以內嵌在應用程式中,或透過使用動態 SQL 陳述式來發出。 它是可執行的陳述式,只有在 DYNAMICRULES 執行行為對套件有效時才能動態準備 (SQLSTATE 42509)。

授權

保留 DBADM 權限的授權 ID 可以建立具有任何有效 schema-nameauthorization-name的綱目。

未保留 DBADM 權限的授權 ID 只能建立具有符合陳述式授權 ID 的 schema-nameauthorization-name 的綱目。

如果陳述式包括 schema-SQL-statement,則 authorization-name 所保留的專用權 (如果未指定,則預設為陳述式的授權 ID) 必須至少包括下列其中一個權限:
  • 執行每一個 schema-SQL-statement 所需的專用權
  • DBADM 權限

語法

Read syntax diagramSkip visual syntax diagramCREATE SCHEMAschema-nameAUTHORIZATIONauthorization-nameschema-nameAUTHORIZATIONauthorization-name DATA CAPTURENONECHANGES schema-SQL-statement ENABLE ROW MODIFICATION TRACKING

說明

綱目名稱
命名綱目的 ID。 名稱不能識別已在型錄中說明的綱目 (SQLSTATE 42710)。 名稱不能以 'SYS' 開頭 (SQLSTATE 42939)。 綱目的擁有者是發出陳述式的授權 ID。
AUTHORIZATION authorization-name
識別綱目擁有者的使用者。 authorization-name 的值也用來命名綱目。 authorization-name 不得識別已在型錄中說明的綱目 (SQLSTATE 42710)。
綱目名稱 授權 授權名稱
識別稱為 schema-name的綱目,其擁有者是 authorization-nameschema-name 不得識別已在型錄中說明的綱目 (SQLSTATE 42710)。 schema-name 不能以 'SYS' 開頭 (SQLSTATE 42939)。
DATA CAPTURE
指出是否要將資料抄寫的額外資訊寫入日誌。 預設值是根據資料庫配置參數 dft_schemas_dcc的值來決定。 如果值為 Yes ,則預設值為 CHANGES ,否則預設值為 NONE。
NONE
指出不會記載資料抄寫的額外資訊。
變更
指出此綱目的 SQL 變更相關額外資訊將寫入日誌。 如果將抄寫此綱目,且使用抄寫擷取程式從日誌中擷取此綱目的變更,則需要此選項。
綱目-SQL 陳述式
可併入作為 CREATE SCHEMA 陳述式一部分的 SQL 陳述式如下:
  • CREATE TABLE 陳述式,排除類型化表格及具體化查詢表格
  • CREATE VIEW 陳述式,排除類型化概略表
  • CREATE INDEX 陳述式
  • COMMENT 陳述式
  • GRANT 陳述式
啟用橫列修改追蹤
指出在綱目中建立的表格將啟用邏輯備份。 僅適用於直欄式組織表格。 如需限制清單,請參閱 針對列修改追蹤啟用綱目

附註

  • 綱目的擁有者決定如下:
    • 如果指定 AUTHORIZATION 子句,則指定的 authorization-name 是綱目擁有者
    • 如果未指定 AUTHORIZATION 子句,則發出 CREATE SCHEMA 陳述式的授權 ID 是綱目擁有者。
  • 假設綱目擁有者是使用者 (不是群組)。
  • 使用 CREATE SCHEMA 陳述式明確建立綱目時,會將綱目上的 CREATEIN、DROPIN 及 ALTERIN 專用權授與綱目擁有者,並且能夠將這些專用權授與其他使用者。
  • 在 CREATE SCHEMA 陳述式中建立的任何物件的定義者都是綱目擁有者。 綱目擁有者也是作為 CREATE SCHEMA 陳述式一部分所授與之任何專用權的授與者。
  • CREATE SCHEMA 陳述式內任何 SQL 陳述式中的不完整物件名稱,會以所建立綱目的名稱隱含地限定。
  • 少於 8 個位元組的綱目名稱會以空白填補,並以 8 個位元組的名稱儲存在型錄中。
  • 如果 CREATE 陳述式包含所建立物件的完整名稱,則完整名稱中指定的綱目名稱必須與所建立綱目的名稱相同 (SQLSTATE 42875)。 陳述式內參照的任何其他物件都可以使用任何有效的綱目名稱來限定。
  • 建議不要使用 "SESSION" 作為綱目名稱。 由於宣告的暫存表格必須由 "SESSION" 來限定,因此可以讓應用程式宣告名稱與持續性表格名稱相同的暫存表格。 參照綱目名稱為 "SESSION" 之表格的 SQL 陳述式將 (在陳述式編譯時期) 解析成宣告的暫存表格,而不是同名的持續性表格。 由於 SQL 陳述式會在不同時間針對靜態內嵌式 SQL 陳述式及動態內嵌式 SQL 陳述式進行編譯,因此結果取決於何時定義宣告的暫存表格。 如果未以綱目名稱 "SESSION" 定義持續性表格、視圖或別名,則不需要考量這些問題。
  • 如果未在表格層次指定 DATA CAPTURE 屬性,則在綱目層次設定 DATA CAPTURE 屬性會導致新建立的表格從綱目繼承 DATA CAPTURE 屬性。

範例

  • 範例 1: 作為具有 DBADM 權限的使用者,建立稱為 RICK 的綱目,並以使用者 RICK 作為擁有者。
       CREATE SCHEMA RICK AUTHORIZATION RICK
  • 範例 2: 建立具有庫存組件表格及產品編號索引的綱目。 將表格的權限提供給使用者 JONES。
       CREATE SCHEMA INVENTRY
    
         CREATE TABLE PART (PARTNO   SMALLINT NOT NULL,
                            DESCR    VARCHAR(24),
                            QUANTITY INTEGER)
    
         CREATE INDEX PARTIND ON PART (PARTNO)
    
         GRANT ALL ON PART TO JONES
  • 範例 3: 建立一個稱為 PERS 的綱目,其中包含兩個表格,每個表格都有參照另一個表格的外部索引鍵。 這是 CREATE SCHEMA 陳述式的特性範例,容許在不使用 ALTER TABLE 陳述式的情況下建立這類表格配對。
       CREATE SCHEMA PERS
    
         CREATE TABLE ORG (DEPTNUMB  SMALLINT NOT NULL,
                            DEPTNAME VARCHAR(14),
                            MANAGER  SMALLINT,
                            DIVISION VARCHAR(10),
                            LOCATION VARCHAR(13),
                            CONSTRAINT PKEYDNO
                              PRIMARY KEY (DEPTNUMB),
                            CONSTRAINT FKEYMGR
                              FOREIGN KEY (MANAGER)
                              REFERENCES STAFF (ID) )
    
         CREATE TABLE STAFF (ID        SMALLINT NOT NULL,
                             NAME     VARCHAR(9),
                             DEPT     SMALLINT,
                             JOB      VARCHAR(5),
                             YEARS    SMALLINT,
                             SALARY   DECIMAL(7,2),
                             COMM     DECIMAL(7,2),
                             CONSTRAINT PKEYID
                               PRIMARY KEY (ID),
                             CONSTRAINT FKEYDNO
                               FOREIGN KEY (DEPT)
                               REFERENCES ORG (DEPTNUMB) )