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

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 创建数据库 » 使用数据库对象 » 使用表 » 变更表

 

变更表 (SQL)

可以在 Interactive SQL 中使用 ALTER TABLE 语句来变更表。如果对具有相关实例化视图的表执行 ALTER TABLE 语句时使用了除 ADD FOREIGN KEY 之外的子句,则 ALTER TABLE 语句会失败。对于所有其它子句,必须禁用相关实例化视图,然后在更改完成后重新启用这些视图。请参见视图依赖性

使用 sa_dependent_views 系统过程来确定是否存在相关实例化视图。请参见sa_dependent_views 系统过程

♦  变更现有的表 (SQL)
  1. 以具有 DBA 权限的用户身份连接到数据库。

  2. 如果要对具有相关实例化视图的表执行模式变更操作,并对 ALTER TABLE 语句使用除 ADD FOREIGN KEY 之外的子句,则使用 ALTER MATERIALIZED VIEW ...DISABLE 语句禁用每个相关实例化视图。不需要禁用相关常规视图。

  3. 执行 ALTER TABLE 语句来变更表。

    数据库中表的定义会被更新。

  4. 如果已禁用了任何实例化视图,则使用 ALTER MATERIALIZED VIEW ...ENABLE 语句来重新启用这些视图。

示例

这些示例说明如何更改数据库的结构。ALTER TABLE 语句几乎可以更改有关表的所有内容,可以使用它来添加或删除外键、将列从一种类型更改为另一种类型,等等等等。在所有这些情况下,一旦进行了更改,引用该表的存储过程、视图和任何其它项都可能无法工作。

以下命令将一列添加到 Skills 表中,用以输入技能的可选说明:

ALTER TABLE Skills
ADD SkillDescription CHAR( 254 );

还可以使用 ALTER TABLE 语句来变更列属性。以下语句将 SkillDescription 列从最多 254 个字符缩短为最多 80 个字符:

ALTER TABLE Skills
ALTER SkillDescription CHAR( 80 );

缺省情况下,如果存在长于 80 个字符的条目,将发生错误。可使用 string_rtruncation 选项来更改这一行为。请参见string_rtruncation 选项 [兼容性]

以下语句将 SkillType 列的名称更改为 Classification:

ALTER TABLE Skills
RENAME SkillType TO Classification;

以下语句删除 Classification 列。

ALTER TABLE Skills
DROP Classification;

以下语句更改整个表的名称:

ALTER TABLE Skills
RENAME Qualification;
另请参见