暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

GBase 8s数据库 更新 row 类型

郑小雯 2023-11-13
87


依赖于该列是命名了的 ROW 类型还是未命名的 ROW 类型,您用于更新 row 类型值的 语法会不同。本部分描述那些差异,还描述如何为 ROW 类型的字段指定 NULL 值。

更新包含命名了的 row 类型的行

要更新在命名了的 ROW 类型上定义的列,您必须指定所有 ROW 类型的字段。例如,下 列语句仅更新 employee 表中 address 列的 street 和 city字段,但每一 ROW 类型的字段必须 包含一个值(允许 NULL 值):

UPDATE employee SET address = ROW('103 California St', San Francisco', address.state, address.zip)::address_t WHERE name = 'zawinul, joe';

在此示例中,从该行中读取 state 和 zip 字段的值,然后立即重新插入到该行内。仅更 新 address 列的 street 和 city 字段。

当您更新在命名了的 ROW 类型上定义的列的字段时,您必须使用 ROW 构造函数,并将 该行值强制转型为适当的命名了的 ROW 类型。

更新包含未命名的 row 类型的行

要更新在未命名的 ROW 类型上定义的列,您必须指定该 ROW 类型的所有字段。例如, 下列语句仅更新 student 表中 address 列的 street 和 city字段,但 ROW 类型的每一字段都必 须包含一个值(允许 NULL 值):

UPDATE student SET s_address = ROW('13 Sunset', 'Fresno', s_address.state, s_address.zip) WHERE s_name = 'henry, john';

要更新在未命名的 ROW 类型上定义的列的字段,请始终在插入该字段值之前,指定 ROW

构造函数。

为 row 类型的字段指定 Null 值

row 类型列的字段可包含 NULL 值。当您以 NULL 值插入到 row 类型字段内或更新 row 类型字段时,您必须将该值强制转型为那个字段的数据类型。

下列 UPDATE 语句展示您可以如何为命名了的 row 类型列的特定字段指定 NULL 值:

UPDATE employee SET address = ROW(NULL::VARCHAR(20), 'Davis', 'CA',ROW(NULL::CHAR(5), NULL::CHAR(4)))::address_t) WHERE name = 'henry, john';

下列 UPDATE 语句展示您如何为 student 表的 address 列的 street 和 zip 字段指定 NULL

值。

UPDATE student SET address = ROW(NULL::VARCHAR(20), address.city, address.state, NULL::VARCHAR(9)) WHERE s_name = 'henry, john';

重要: 您不可为 row 类型列指定 NULL 值。您仅可为 row 类型的个别的字段指定 NULL 值。 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论