Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 服务器 - SQL 用法 » 表、视图和索引 » 计算列

 

变更计算列

更改或删除在计算列中使用的表达式。

前提条件

您必须是表的所有者,或者具有以下其中一种特权:

  • 表的 ALTER 特权以及 COMMENT ANY OBJECT、CREATE ANY OBJECT 或 CREATE ANY TABLE 系统特权之一
  • ALTER ANY TABLE 系统特权
  • ALTER ANY OBJECT 系统特权
 任务
  1. 连接到数据库。

  2. 执行如下 ALTER TABLE 语句更改用于计算列的表达式:

    ALTER TABLE table-name
    ALTER column-name
    SET COMPUTE ( new-expression );
  3. 要将列转换为常规(非计算)列,可执行如下 ALTER TABLE 语句:

    ALTER TABLE
    table-name
    ALTER column-name
    DROP COMPUTE;

结果

如果要更改列的计算,则在执行该语句时会重新计算列。

如果要将某个计算列更改为常规(非计算)列,则不会在执行该语句时更改该列中的现有值,并且此后也不会自动更改这些现有值。

创建一个名为 alter_compute_test 的表并为其填充数据,然后执行以下语句对该表运行 SELECT 查询:

CREATE TABLE alter_compute_test (
   c1 INT,
   c2 INT
) ;
INSERT INTO alter_compute_test (c1) VALUES(100);
SELECT * FROM alter_compute_test ;

请注意,c2 列返回一个 NULL 值。将 c2 列变为计算列、为其填充数据,然后对 alter_compute_test 表运行另一个 SELECT 语句。

ALTER TABLE alter_compute_test
   ALTER c2
   SET COMPUTE ( DAYS ( '2001-01-01' , CURRENT DATE ) )
INSERT INTO alter_compute_test (c1) VALUES(200) ;
SELECT * FROM alter_compute_test ;

c2 列现包含自 2001 年 1 月 1 日以来的天数。接下来,变更 c2 列,使其不再是计算列:

ALTER TABLE alter_compute_test
ALTER c2
DROP COMPUTE ;

 另请参见