变更表可能会影响到数据库的其他用户。虽然可以在其它连接处于活动状态时执行 ALTER TABLE 语句,但如果任何其它连接正在使用要变更的表,则不能执行 ALTER TABLE 语句。对于大型表,ALTER TABLE 操作非常耗时。在处理该语句的过程中,所有其它引用正被变更的表的请求都将被禁止。
有几种方法可以改变表中现有的 CHECK 约束集。
您可以给表或某个列添加新 CHECK 约束。
通过将列的 CHECK 约束设置为 NULL,可以删除该约束。例如,以下语句将删除 Customers 表中 Phone 列的 CHECK 约束:
ALTER TABLE Customers ALTER Phone CHECK NULL; |
您可以用与添加 CHECK 约束相同的方法来替换列的 CHECK 约束。例如,以下语句将添加或替换 Customers 表中 Phone 列的 CHECK 约束:
ALTER TABLE Customers ALTER Phone CHECK ( Phone LIKE '___-___-____' ); |
您可以变更在表中定义的 CHECK 约束:
您可以使用带有 ADD table-constraint 子句的 ALTER TABLE 添加新的 CHECK 约束。
如果已经定义了约束名,则可以变更各个约束。
如果尚未定义约束名,则可以使用 ALTER TABLE DELETE CHECK 删除所有现有的 CHECK 约束(包括列 CHECK 约束和从域继承的 CHECK 约束),然后添加新的 CHECK 约束。
使用带有 DELETE CHECK 子句的 ALTER TABLE 语句:
ALTER TABLE table-name DELETE CHECK; |
Sybase Central 允许您添加、变更和删除表 CHECK 约束和列 CHECK 约束。
从表中删除列并不会删除表约束中保存的与该列相关联的 CHECK 约束。如果不删除这些约束,尝试在该表中插入数据时(甚至在只查询数据时)会出现错误消息。
如果返回 FALSE 值,则表 CHECK 约束失败。如果条件返回 UNKNOWN 值(此行为同返回 TRUE 值一样),则允许使用此值。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |