2012年5月18日金曜日

[PostgreSQL] ROW 类型

1. 创建基表
=# \d people
    Table "public.people"
 Column |  Type  | Modifiers
--------+--------+-----------
 name   | text   |
 phone  | text[] |
 work   | text   |

insert into people values ('Tom', '{"080-1111-0001","080-1111-0002"}'::text[], 'Manager');
insert into people values ('Jerry', '{"080-2222-0001","080-2222-0002"}'::text[], 'Saler');

=# select * from people ;
 name  |             phone             |  work  
-------+-------------------------------+---------
 Tom   | {080-1111-0001,080-1111-0002} | Manager
 Jerry | {080-2222-0001,080-2222-0002} | Saler
(2 rows)

2. 创建扩展表
=# create table infos (id int, info people);
=# insert into infos select row_number() over() as id, row(people.*)::people as info from people;

3. 扩展表包含的数据
=# select * from infos;
 id |                     info                     
----+-----------------------------------------------
  1 | (Tom,"{080-1111-0001,080-1111-0002}",Manager)
  2 | (Jerry,"{080-2222-0001,080-2222-0002}",Saler)
(2 rows)

0 件のコメント:

コメントを投稿