GBase 8s
适配迁移
文章

扩展数据类型row type简单使用示例

发表于2024-06-21 23:00:55125次浏览3个评论

1、row数据类型介绍

ROW 数据类型是一个或多个元素(称为字段)的有序集合。每个字段都具有名称和数据类型。和表的列区别在于字段没有缺省子句,不能对字段定义约束,只能将字段与行类型一起使用,而不能将其于表一起使用。

相当于多种数据类型合成一种数据类型使用。

2、创建

语法:CREATE ROW TYPE 类型名 (字段名 字段类型,字段名 字段类型……);

字段类型在使用序列和简单大对象的时候会有一些限制,具体参考语法手册。

以下是示例,创建完成可以看到sysxtdtypes系统表中已经存在,mode是R,代表命名ROW类型。


> create row type myrtp (id int,name varchar(10));

Row type created.

> select * from sysxtdtypes where name = 'myrtp';



extended_id  2052
domain       
mode         R
owner        gbasedbt
name         myrtp
type         20502
source       0
maxlen       16
length       0
byvalue      F
cannothash   F
align        4
locator      0
pkg          

1 row(s) retrieved.

3、插入数据

ROW数据类型我们可以创建类型表,使用以下语句,如果创建类型表,那么字段类型,名称和顺序都和ROW类型一致,可以按照正常表插入。

> create table t_rtyp of type myrtp;

Table created.

> insert into t_rtyp values (1,'dd');

1 row(s) inserted.

> select * from t_rtyp;


         id name       

          1 dd        

1 row(s) retrieved.

如果作为表中的一个数据类型,则插入需要进行强制转换,同理update也是一样。

> create table t_rtyp1 (id int, col myrtp);

Table created.

> insert into t_rtyp1 values(1,ROW(1,'cc')::myrtp);

1 row(s) inserted.

> select * from t_rtyp1;



id   1
col  ROW(1          ,'cc') 

> update t_rtyp1 set col=ROW(1,'dd')::myrtp where id = 1;

1 row(s) updated.

> select * from t_rtyp1;



id   1
col  ROW(1          ,'dd') 

1 row(s) retrieved.

4、删除

语法:CREATE ROW TYPE 类型名 RESTRICT

如果还在使用此类型,无法删除。

> drop row type myrtp restrict;

Row type dropped.

> select * from sysxtdtypes where name = 'myrtp';



No rows found.

> 

 

评论

登录后才可以发表评论
用户头像
levvel发表于 6个月前
太有深度了!
崔哥发表于 5个月前
梅花不肯傍春光,自向深冬著艳阳。龙笛远吹胡地月,燕钗初试汉宫妆。风虽强暴翻添思,雪欲侵凌更助香。应笑暂时桃李树,盗天和气作年芳。
GBase用户47954发表于 2个月前
感谢作者的精彩分享!