1. UPDATE 语句

使用 UPDATE 语句来更改表或视图中一个或多个现有的行的一个或多个列中的值。

语法      

Target

sybase一周前 sybase update语句_数据库

 

WHERE 选项

sybase一周前 sybase update语句_数据库_02

 

元素

描述

限制

语法

alias 

您在此为本地表或远程表声明的临时的名称

如果 SET 是 alias 的标识符,则 AS 关键字必须在 alias 之前

标识符 

condition 

被更新的行必须满足的逻辑标准

不可为 UDR 或相关联的子查询

条件 

cursor 

要更新其当前行的游标的名称

不可为主变量。您不可更新包括合计的行

标识符 

synonym、table、view 

包含要被更新的行的同义词、表或视图

synonym 和表或它指向的视图必须存在

数据库对象名 

用法

使用 UPDATE 语句来更新任何下列类型的数据库对象或程序对象:

  1. 表中的一行:单个行、行的组或表中的所有行
  2. 集合数据类型的列中的元素
  3. 在命名的或未命名的 ROW 数据类型的列中,一个字段或所有字段。

随同 GBase 8s ,您还可使用此语句来更改在 GBase 8s ESQL/C 或 SPL 集合变量或 ROW 变量中一个或多个元素的值。

要获取关于如何更新集合变量的元素的信息,请参阅 集合派生表。在此 UPDATE 语句的描述中接下来的部分描述如何更新表中的行。

您必须或拥有该表,或对该表有 Update 权限。请参阅 GRANT 语句。要更新视图中的数据,您必须有 Update 权限,且该视图必须满足 通过视图更新行 中说明的要求。

UPDATE 语句的目标不可为 CREATE EXTERNAL TABLE 语句定义了的表对象。

游标(如 DECLARE 语句的 SELECT ... FOR UPDATE 部分中定义的那样)可仅包含列名称。如果您省略 WHERE 子句,则更新目标表的所有行。

如果您正在使用有效的检查,且检查模式设置为 IMMEDIATE,则在每一 UPDATE 语句的结尾处检查所有启用的约束。如果检查模式设置为 DEFERRED,则直到提交事务才检查所有启用的约束。

在 DB-Access 中,如果您省略 WHERE 子句,且处于交互的模式中,则 DB-Access 不运行 UPDATE 语句,直到您确认您想要更改所有行为止。然而,如果该语句在命令文件中,且您在在命令行运行,则立即执行该语句。

示例

下列示例创建并更新视图。

CREATE VIEW cust_view AS SELECT * FROM customer;
UPDATE cust_view SET customer_num=10001 WHERE customer_num=101;

使用 ONLY 关键字

如果您使用 UPDATE 语句来更新超级表的行,则还可更新来自它的子表的行。要仅更新来自超级表的行,请在表名称之前使用 ONLY 关键字,如此示例所示:

UPDATE ONLY(am_studies_super)
        WHERE advisor = "johnson"
        SET advisor = "camarillo";

注: 如果您在超级表上使用不带有 ONLY 关键字且不带有 WHERE 子句的 UPDATE 语句,则更新超级表的所有行和它的子表。如果您计划使用 WHERE CURRENT OF 子句来更新游标的活动集的当前行,则您不可使用 ONLY 关键字。