更新超级表的行

当您更新超级表的行时,更新的作用域是超级表及其子表。

当您对超级表构造 UPDATE 语句时,您可更新该超级表中的所有列,以及从该超级表继承的子表的列。例如,下列语句更新来自 employeesales_rep 表的行,它们是超级表 person 的子表:
UPDATE person
          SET salary=65000
          WHERE address.state = 'CA';

然而,对超级表的更新不允许您更新不在该超级表内的子表的列。例如,在前面的更新语句中,您不可更新 sales_rep 表的 region_num 列,因为 region_num 列未出现在 employee 表中。

当您对超级表执行更新时,请注意该更新的作用域。例如,对 person 表的 UPDATE 语句未包括 WHERE 子句来限定要更新的行,该语句修改 personemployeesales_rep 表的所有行。

要限定为仅对超级表的行更新,您必须在 UPDATE 语句中使用 ONLY 关键字。例如,下列语句仅更新 person 表的行:
UPDATE ONLY(person)
          SET address = ROW('14 Jackson St', 'Berkeley',
          address.state, address.zip)
          WHERE name = 'Sallie, A.';
重要: 当您更新超级表的行时,请小心使用,因为对超级表的更新的作用域包括该超级表及其所有子表。