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个月前
感谢作者的精彩分享!
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25044
- 42023-09-25浏览数:18519
- 52020-05-11浏览数:17526