更新 ROW 类型列
使用 SET 子句来更新命名的或未命名的 ROW 类型列。例如,假设您定义下列命名的 ROW 类
型和包含命名的和未命名的 ROW 类型的列的表:
CREATE ROW TYPE address_t
(
street CHAR(20), city CHAR(15), state CHAR(2)
);
CREATE TABLE empinfo
(
emp_id INT
name ROW ( fname CHAR(20), lname CHAR(20)),
address address_t
);
要更新未命名的 ROW 类型,请在圆括号括起的字段值的列表之前指定 ROW 构造函数。
下列语句更新 empinfo 表的 name 列(未命名的 ROW 类型):
UPDATE empinfo SET name = ROW('John','Williams') WHERE emp_id =455;
要更新命名的 ROW 类型,请在字段值的列表(在圆括号中)之前指定 ROW 构造函数,并使用
强制转型(::)运算符来将 ROW 值强制转型为命名的 ROW 类型。下列语句更新 empinfo 表的
address 列(命名的 ROW 类型):
UPDATE empinfo
SET address = ROW('103 Baker St','Tracy','CA')::address_t
WHERE emp_id = 3568;
要获取更多关于 ROW 构造函数的语法,请参阅 构造函数表达式。另请参阅 Literal Row。
ROW 列 SET 子句仅可支持字段的文字值。要使用 ESQL/C 变量来指定字段值,您必须将 ROW
数据选择到 row 变量内,使用单独的字段值的主变量,然后以 row 变量更新 ROW 列。要获取
更多信息,请参阅 更新 Row 变量(ESQL/C)。
您可使用 GBase 8s ESQL/C 主变量来插入非文字值作为:
⚫ 整个 row 类型插入列内
使用 row 变量作为 SET 子句中的变量名称来一次更新 ROW 列中的所有字段。
⚫ ROW 类型的单独字段
要将非文字值插入 ROW 类型列内,您可首先更新 row 变量中的元素,然后指定在
UPDATE 语句的 SET 子句中的 collection 变量。
当您使用 SET 子句中的 row 变量时,row 变量必须包含每一字段值的值。要获取关于如何将值
插入到 row 变量内的信息,请参阅 更新 Row 变量(ESQL/C)。
您可使用 UPDATE 语句来只修改行中的某些字段:
⚫ 以字段 projection 指定其值保持不变的所有字段的字段名称
例如,下列 UPDATE 语句仅更改 empinfo 表的 address 列的 street 和 city 字段:
UPDATE empinfo
SET address = ROW('23 Elm St', 'Sacramento', address.state)
WHERE emp_id = 433;
address.state 字段保持不变。
⚫ 将该行选择到 ESQL/C row 变量内并更新期望的字段。
要获取更多信息,请参阅 更新 Row 变量(ESQL/C)。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




