7.4.7 更新超级表的行
当您更新超级表的行时,更新的作用域是超级表及其子表。 GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 175 -
当您对超级表构造 UPDATE 语句时,您可更新该超级表中的所有列,以及从该超级表继
承的子表的列。例如,下列语句更新来自 employee 和sales_rep 表的行,它们是超级
表 person 的子表:
UPDATE person
SET salary=65000
WHERE address.state = 'CA';
然而,对超级表的更新不允许您更新不在该超级表内的子表的列。例如,在前面的更新语
句中,您不可更新 sales_rep 表的 region_num 列,因为region_num 列未出现在 employee 表
中。
当您对超级表执行更新时,请注意该更新的作用域。例如,对 person 表的 UPDATE 语句
未包括 WHERE 子句来限定要更新的行,该语句修改person、employee 和 sales_rep 表的所
有行。
要限定为仅对超级表的行更新,您必须在 UPDATE 语句中使用 ONLY 关键字。例如,下
列语句仅更新 person 表的行:
UPDATE ONLY(person)
SET address = ROW('14 Jackson St', 'Berkeley',
address.state, address.zip)
WHERE name = 'Sallie, A.';
重要: 当您更新超级表的行时,请小心使用,因为对超级表的更新的作用域包括该超级表及其
所有子表。