暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MODIFY 子句

kelei2006 2022-10-18
262

使用 MODIFY 子句更改列的数据类型、长度或缺省值,添加或删除列的安全标签,允许或不允许
列中有 NULL 值或者重置 SERIAL 、SERIAL8 或 BIGSERIAL 列的序列号。
您不能将列的数据类型更改为 COLLECTION 或 ROW 类型。
受保护表的 IDSSECURITYLABEL 列不能被不同的数据类型修改,现有的列也不能被更改为
IDSSECURITYLABEL 类型。
当修改列时, 所有 先前与该列相关联的属性(即,缺省值、单列检查约束或引用约束)被删除。当
希望保留列的某些属性,例如 PRIMARY KEY ,您必须在同一 MODIFY 子句中重新指定那些属
性。
例如,如果您将现有列 quantity 的数据类型更改为 SMALLINT ,但希望保留其缺省值(在这种情
况中,为 1)和 NOT NULL 列属性,可以发出以下语句:
ALTER TABLE items MODIFY (quantity SMALLINT DEFAULT 1 NOT NULL);
注: 在 MODIFY 子句中两个属性都再次被指定。
当在 MODIFY 子句中指定 PRIMARY KEY 约束,数据库服务器也会默示地在同一列创建 NOT
NULL 约束或将同一组列更改为主键。
当更改列的数据类型时,数据库服务器不会在适当的位置执行修改。下个示例将 VARCHAR(15)
列更改为 LVARCHAR(3072) 列:
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 约束。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论