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

SQL Anywhere 11.0.1 (中文) » UltraLite - 数据库管理和参考 » UltraLite SQL 参考 » UltraLite SQL 语句

 

UltraLite ALTER TABLE 语句

此语句用于修改表定义。

语法
ALTER TABLE table-name {
add-clause 
| modify-clause 
| drop-clause 
| rename-clause 
}
add-clause :
 ADD { column-definition | table-constraint }
modify-clause :
ALTER column-definition
drop-clause :
DROP { column-name | CONSTRAINT constraint-name }
rename-clause :   
RENAME { 
   new-table-name   
   | [ old-column-name TO ] new-column-name
   | CONSTRAINT old-constraint-name TO new-constraint-name }
column-definition :
column-name data-type
   [ [ NOT ] NULL ] 
   [ DEFAULT column-default ] 
   [ UNIQUE ]
column-default :
GLOBAL AUTOINCREMENT [ ( number ) ] 
| AUTOINCREMENT 
| CURRENT DATE 
| CURRENT TIME 
| CURRENT TIMESTAMP 
| NULL 
| NEWID( ) 
| constant-value
table-constraint :
[ CONSTRAINT constraint-name ] 
{ fkey-constraint | unique-key-constraint } 
[ WITH MAX HASH SIZE integer ]
fkey-constraint : 
[ NOT NULL ] FOREIGN KEY [ role-name ] ( ordered-column-list )
   REFERENCES table-name ( column-name, ... ) 
   [ CHECK ON COMMIT ] 
unique-key-constraint :
UNIQUE ( ordered-column-list )
 ordered-column-list :
( column-name [ ASC | DESC ], ... )
参数

add-clause   向表中添加新列或表约束:

  • ADD column-definition 子句   向表中添加新列。如果列有缺省值,新列中的所有行将用该缺省值来填充。有关对该子句的关键字和次级子句的说明,请参见UltraLite CREATE TABLE 语句

  • ADD table-constraint 子句   向表中添加约束。可选约束名用于以后单独修改或删除约束,而不必修改整个表的约束。有关对该子句的关键字和次级子句的说明,请参见UltraLite CREATE TABLE 语句

    注意

    不能在 UltraLite 中添加主键。

modify-clause   更改单个列的定义。请注意,当语句是 ALTER 语句的一部分时,无法在 column-definition 中使用主键。有关 column-definition 的完整说明,请参见UltraLite CREATE TABLE 语句

drop-clause   删除列或表约束:

  • DROP column-name   从表中删除列。如果列包含在任何索引、唯一约束、外键或主键中,则必须删除此对象UltraLite 才能删除该列。

  • DROP CONSTRAINT table-constraint   从表的定义中删除命名约束。有关 table-constraint 的完整说明,请参见UltraLite CREATE TABLE 语句

    注意

    不能在 UltraLite 中删除主键。

rename-clause   更改表、列或约束的名称:

  • RENAME new-table-name   将表名更改为 new-table-name。请注意,必须修改所有使用旧表名的应用程序。被自动分配旧表名的外键的名称不更改。

  • RENAME old-column-name TO new-column-name   将列名更改为 new-column-name。请注意,需要修改所有使用旧列名的应用程序。

  • RENAME old-constraint-name TO new-constraint-name   将约束名更改为 new-constraint-name。请注意,需要修改所有使用旧约束名的应用程序。

    注意

    不能在 UltraLite 中重命名主键。

column-constraint   为了确保数据库中数据的完整性,列约束将对列能够保存的值进行限制。列约束只能是 UNIQUE。

UNIQUE   标识唯一标识表中各行的一列或多列。表中任何两行的值在所有指定的列中不能相同。表可以有多个唯一约束。

注释

在一个 ALTER TABLE 语句中,只能添加、修改或删除一个 table-constraintcolumn-constraint

角色名是外键的名称。role-name 的主要作用是区分同一表的两个外键。或者,可使用 CONSTRAINT constraint-name 命名外键。但是,请勿同时使用两种方法来命名外键。

不能通过 MODIFY 修改表约束或列约束。要更改约束,必须通过 DELETE 删除旧约束并通过 ADD 添加新约束。

名称以 nosync 结尾的表只能重命名为也以 nosync 结尾的表名。请参见UltraLite 中的 nosync 表

如果影响表的语句已经由其它请求或查询引用,则 ALTER TABLE 语句将无法执行。同样,当表被变更时,UltraLite 不会处理引用表的请求。此外,当数据库包含活动查询或未提交的事务时,您也无法执行 ALTER TABLE 语句。

对于 UltraLite.NET 用户:除非也为所有数据对象(例如 ULDataReader)调用了 Dispose 方法,否则您将无法执行此语句。请参见Dispose 方法

如果模式更改同时开始,则语句将不会被释放。请参见使用 DDL 语句更改模式

另请参见
示例

以下语句从名为 MyEmployees 的虚构表中删除 Street 列。

ALTER TABLE MyEmployees
DROP Street;

以下示例将 MyCustomers 虚构表的 Street 列更改为可容纳约 50 个字符。

ALTER TABLE MyCustomers
MODIFY Street CHAR(50);