2011-09-06 49 views
2

我必須創建一個包含用戶定義類型和插入數據的表。如何轉換爲postgresql中的用戶定義類型

我試過這種方式。

  1. create type type1 as(i int);
  2. create function mycast(int)返回type1爲'select $ 1;'語言'sql';
  3. 使用函數mycast(int)創建cast(int爲type1)爲隱式;
  4. create table table_type(t type1);
  5. insert into table_type values(1 :: type1);

現在值越來越插入,但包裹在括號中,類似這樣的

select * from table_type; 

    t 
-------- 
(1) 

(1 rows) 

我相信有可能是我的功能錯誤。有人可以幫忙嗎?我基本上想要一個函數,它返回與我的輸入相同的輸出(沒有任何())。

謝謝。

回答

2

您定義的類型是一個複合類型,其中包含一個int類型的屬性。組合類型的文本表示是圍繞屬性列表的括號。但從你的演員功能(這是破壞的,因爲它返回一個標量而不是複合類型)來判斷,這不是你想要的。你可以做的最好的是定義一個這樣的域:

create domain type1 as int; 

然後,你甚至不需要演員。

+0

+1更快。作爲參考['CREATE DOMAIN'](http://www.postgresql.org/docs/current/static/sql-createdomain.html) –

+0

@Peter謝謝,但我需要使用create type本身。我的要求是測試創建類型語法和用戶定義的類型。 – dspgsql

+1

然後請寫一個問題,描述你實際上想要做的事情。 –

相關問題