使用 MODIFY 子句更改列的数据类型、长度或缺省值,添加或删除列的安全标签,允许或不允许列中有 NULL 值或者重置 SERIAL 、SERIAL8 或 BIGSERIAL 列的序列号。
元素 | 描述 | 限制 | 语法 |
---|---|---|---|
column | 要修改的列 | 必须在表中存在。不能是集合或 IDSSECURITYLABEL 数据类型。 | 标识符 |
您不能将列的数据类型更改为 COLLECTION 或 ROW 类型。
受保护表的 IDSSECURITYLABEL 列不能被不同的数据类型修改,现有的列也不能被更改为 IDSSECURITYLABEL 类型。
当修改列时, 所有 先前与该列相关联的属性(即,缺省值、单列检查约束或引用约束)被删除。当希望保留列的某些属性,例如 PRIMARY KEY ,您必须在同一 MODIFY 子句中重新指定那些属性。
ALTER TABLE items MODIFY (quantity SMALLINT DEFAULT 1 NOT NULL);
ALTER TABLE stock MODIFY (description LVARCHAR(3072));
例如,如果修改具有唯一约束的列,则该唯一约束被删除。如果其它表中的列引用该列,则这些引用约束也被删除。另外,如果该列是多列主键或唯一约束的一部分,则不删除多列约束,但其它表放置在该列上的任何引用约束要被删除。
另一个示例,假设列是多列主键约束的一部分。其它两个表中的外键引用该主键。如果修改此列,则不删除多列主键约束,但是其它表放置在它上面的引用约束要被删除。
考虑以下语句定义的表:
CREATE TABLE tab1(c1 INT, c2 INT);
要添加 NOT NULL 约束,则需要 ALTER TABLE MODIFY 语句:
ALTER TABLE tab1 MODIFY (c1 INT NOT NULL);
不能使用 ADD CONSTRAINT 子句添加 NULL 或 NOT NULL 约束。