2011-09-06 31 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

然后请写一个问题,描述你实际上想要做的事情。 –

相关问题