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

GBASE:GBase 8s SQL 指南:语法_2 SQL 语句(131)

GBASE数据库 2022-01-27
821

MODIFY 子句 

使用 MODIFY 子句更改列的数据类型、长度或缺省值,添加或删除列的安全标签,允许或不允许 列中有 NULL 值或者重置 SERIAL 、SERIAL8 或 BIGSERIAL 列的序列号。 

MODIFY Clause


您不能将列的数据类型更改为 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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论