[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 數據庫 > 其它 > 正文
PostgreSQL7.0手冊-用戶手冊-19. SQL命令-CREATE TYPE
編譯:何偉平 laser@zhengmai.com.cn (2001-04-21 21:52:20)
CREATE TYPE
名稱
CREATE TYPE  定義一個新的基本數據類型 

語法
CREATE TYPE typename ( INPUT = input_function, OUTPUT = output_function
      , INTERNALLENGTH = { internallength | VARIABLE } [ , EXTERNALLENGTH = { externallength | VARIABLE } ]
    [ , DEFAULT = "default" ]
    [ , ELEMENT = element ] [ , DELIMITER = delimiter ]
    [ , SEND = send_function ] [ , RECEIVE = receive_function ]
    [ , PASSEDBYVALUE ] )

輸入
typename 
將要創建的類型名. 
internallength 
一個文本串,說明新類型的內部長度. 
externallength 
一個文本串,說明新類型的外部長度. 
input_function 
一個函數的名稱,由 CREATE FUNCTION 創建,將數據從外部類型轉換成內部類型. 
output_function 
一個函數的名稱,由 CREATE FUNCTION 創建,將數據從內部格式轉換成適顯示的形式. 
element 
被創建的類型是數組;這個聲明數組元素的類型. 
delimiter 
數組的分隔字符. 
default 
用顯示的表示"數據不存在"的缺省文本. 
send_function 
用 CREATE FUNCTION 創建的函數名,它將該類型的數據轉換成一個適合傳輸到其他機器的形式. 
receive_function 
用 CREATE FUNCTION 創建的函數名,將該類型從適傳輸給其他機器的形式轉換為內部形式. 
輸出
CREATE 
如果創建類型成功,返回此信息. 

描述
CREATE TYPE 允許用戶在 Postgres 當前數據庫裡創建一個新的用戶數據類型.定義該類型的用戶成為其所有者. Typename 是新類型的名稱而且必須在所定義的數據庫中唯一. 
CREATE TYPE 需要在定義類型之前先注冊兩個函數(用創建函數命令).新的基本類型的形式由 input_function 決定,它將該類型的外部形式轉換成可以被對該類型操作的操作符和函數識別的形式.自然,output_function 用做相反用途.輸入和輸出函數都必須定義成接收一個或兩個類型為 "opaque" 的參數的函數. 

新的基本數據類型可定義成為定長,這時 internallength 是一個正整數,也可以是變長的,這時 Postgres 假定新類型的格式和 Postgres 所支持的"text" 類型是一樣的.要指明一個類型是變長,將 internallength 設成 VARIABLE. 類似的,外部形式也用 externallength 關鍵字聲明. 

要指明一個類型是數組以及指明一個類型有數組元素.應該使用element關鍵字.例如,定義一個4-字節整數("int4"),聲明如下 

ELEMENT = int4
要聲明用這種類型數組的分隔符,可設置 delimiter 聲明分隔符.缺省的分隔符是逗號(","). 
一個可選的的缺省值可用令用戶聲明某種位模式來代表"數據不存在".用 DEFAULT 關鍵字聲明缺省值. 

可選的函數 send_function 和 receive_function 用請求 Postgres 服務的應用程序和 Postgres 數據庫不在同一台機器的場合.在這種情況下,Postgres 運行的機器所用的數據類型格式可能和遠端機器的不一樣.在這種情況下,將服務器到客戶端的數據轉換成一個標準格式,當服務器收到從客戶端來的數據時再轉換成機器的格式是合適的.如果沒有這樣的函數聲明,就假設內部數據格式可以被任何相關的硬件體系接受.比如, 如果在一台 Sun-4 和一台 DECstation 之間傳遞數據,單字節數據就不必轉換,但許多其他類型需要(轉換). 

可選的標簽,PASSEDBYVALUE,表明使用該數據類型的操作符或函數應該傳遞一個參數的值而不是引用(形參).要注意對內部格式超過4-字節的類型你不能傳遞參數值. 

對新的基本類型,用戶可以通過本節描述的一些功能定義操作符,函數和聚集. 

數組類型
兩個通用內建函數,array_in 和 array_out,用快速建立變長數組類型.這些函數可對任何現存的 Postgres 數據類型進行操作. 
數組類型
兩個通用內建函數,array_in 和 array_out,用快速建立變長數組類型.這些函數可對任何現存的 Postgres 數據類型進行操作. 
大對象類型
一個"正常的" Postgres 類型最多只能有8192字節長.如果你需要更大的類型,你必須創建大對象類型(Large Object type).這些數據類型的接口在 PostgreSQL 程序員手冊 裡詳細討論.所有大對象類型的長度總是 VARIABLE (變長).
例子
這個命令創建長方形數據類型,並且將這種類型用一個表定義: 
CREATE TYPE box (INTERNALLENGTH = 8,
    INPUT = my_procedure_1, OUTPUT = my_procedure_2);
CREATE TABLE myboxes (id INT4, description box);

這條命令創建一個變長數組類型, 其數組元素的類型是整數. 
CREATE TYPE int4array (INPUT = array_in, OUTPUT = array_out,
    INTERNALLENGTH = VARIABLE, ELEMENT = int4);
CREATE TABLE myarrays (id int4, numbers int4array);

這條命令創建一個大對象類型並用其創建了一個表: 
CREATE TYPE bigobj (INPUT = lo_filein, OUTPUT = lo_fileout,
    INTERNALLENGTH = VARIABLE);
CREATE TABLE big_objs (id int4, obj bigobj);

注意
類型名不能以下劃線("_")開頭而且只能有31個字符長.這是因為 Postgres 偷偷地為每種基本類型創建了一個數組類型,而且該數組類型的名字是基本類型名前面加一個下劃線. 
請參考 DROP TYPE 獲取刪除一個類型的信息. 

請參閱 PostgreSQL 程序員手冊 中 CREATE FUNCTION, CREATE OPERATOR 和大對象的章節獲取更多信息. 

兼容性
SQL3
CREATE TYPE 是 SQL3 語句.

(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
PostgreSQL7.0手冊-用戶手冊-19. SQL命令-VACUUM (2001-04-21 22:16:33)
PostgreSQL7.0手冊-用戶手冊-19. SQL命令-UPDATE (2001-04-21 22:16:12)
PostgreSQL7.0手冊-用戶手冊-19. SQL命令-UNLISTEN (2001-04-21 22:15:44)
PostgreSQL7.0手冊-用戶手冊-19. SQL命令-TRUNCATE (2001-04-21 22:15:24)
PostgreSQL7.0手冊-用戶手冊-19. SQL命令-SHOW (2001-04-21 22:15:01)
PostgreSQL7.0手冊-用戶手冊-19. SQL命令-SET (2001-04-21 22:14:42)
PostgreSQL7.0手冊-用戶手冊-19. SQL命令-SELECT INTO (2001-04-21 22:14:19)
PostgreSQL7.0手冊-用戶手冊-19. SQL命令-SELECT (2001-04-21 22:14:01)
PostgreSQL7.0手冊-用戶手冊-19. SQL命令-ROLLBACK (2001-04-21 22:13:41)
PostgreSQL7.0手冊-用戶手冊-19. SQL命令-REVOKE (2001-04-21 22:13:18)

===更多相關===
 

★  樊強制作 歡迎分享  ★