- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用 ALTER TABLE 语句来更改表中的列
创建数据库之前,需要考虑要存储在数据库中的数据的类型和组织。需要计划您的业务可能要使用哪种类型的数据以及如何使用这些数据。但是,情况会有所变化。尽管计划良好,但仍可能出现新需求,因此需要对数据库中的表作出更改。可以使用 ALTER TABLE 语句来改变表数据的行格式:删除列、更改列的类型和某些其他列属性。
在执行包含重组建议的操作的 ALTER TABLE 语句之后访问表的限制
良好地计划表改变的实施非常重要。运行包含重组建议的操作的 ALTER TABLE 语句时,可能必须要认识到的一点是:一旦执行了 ALTER TABLE 语句,表将处于重组暂挂状态。这意味着在执行重组之前,几乎所有操作都不能访问该表。请参阅 SQL Reference 中的 ALTER TABLE 语句,以获取 ALTER TABLE 操作的完整列表(一些操作也称为 REORG 建议的操作)。
在包含 REORG 建议的操作的 ALTER TABLE 语句之后,只能对表执行下列语句:
REORG TABLE DROP TABLE
ALTER TABLE
RENAME TABLE
要在重组失败的情况下允许数据恢复,可以使用基于扫描的只读语句来读取表数据,即使用 TABLE SCAN 语句。另外,不允许基于索引的表访问。如果使用基于表扫描的访问而不使用基于索引的访问,则还可以从表中发出 SELECT 语句。
下列 ALTER TABLE 语句需要验证行数据,并且不允许它后面跟着 REORG 建议的 ALTER。但是,可以执行其他大多数 ALTER TABLE 语句。不能使用的 ALTER TABLE 语句是需要扫描列数据以验证改变操作是否有效的那些语句。具体地说,这表示不能对表执行下列语句:
ADD UNIQUE CONSTRAINT
ADD CHECK CONSTRAINT
ADD REFERENTIAL CONSTRAINT
ALTER COLUMN SET NOT NULL
ALTER TABLE ADD REFERENTIAL CONSTRAINT
ALTER TABLE ADD CONSTRAINT
ALTER TABLE ADD UNIQUE CONSTRAINT
包含重组建议的操作的 ALTER TABLE 语句的示例
除了对执行包含重组建议的操作的 ALTER TABLE 语句之后的表访问进行限制外,在执行传统重组之前并且在其他重组建议的操作成功之前,DB2? 数据库管理器只允许您指定三个重组建议的操作。为此,应该编码每个包含重组建议的操作的 ALTER TABLE 语句,以尽可能地更改多列的属性。例如,如果按下列顺序指定都只包含一个重组建议的操作的 ALTER TABLE 语句,则在执行传统重组之前,将无法指定需要新行格式的任何后续 ALTER TABLE 语句:
ALTER TABLE foo DROP COLUMN C1
ALTER TABLE foo DROP COLUMN C2
ALTER TABLE foo DROP COLUMN C3
然而,您可以将这三个 ALTER TABLE 语句替换为以下一个语句:
ALTER TABLE foo DROP COLUMN C1 DROP COLUMN C2 DROP COLUMN C3
由于使用一个 SQL 语句只能改变每列的一个属性(例如,类型或可空性),所以将一列更改为新格式可能需要使用多个包含重组建议的操作的 ALTER TABLE 语句。在这种情况下,改变的顺序很重要,要确保一个改变不能由于重组暂挂状态而排除另一个改变。这表示应该使用第一个包含重组建议的操作的 ALTER TABLE 语句来执行需要表数据访问的操作。例如,如果列 C1 是整型的并且可空,您想将此列更改为不可空的 BIGINT,则下列顺序将失败:
ALTER TABLE bar ALTER COLUMN C1 SET DATA TYPE BIGINT
ALTER TABLE bar ALTER COLUMN C1 SET NOT NULL
失败的原因是第二个 ALTER TABLE 语句需要扫描列 C1 以查看是否有任何行包含值 NULL。由于表在第一个语句之后处于重组暂挂状态,所以不能执行第二个语句的扫描。
但是,下列顺序将成功,因为第一个语句不访问数据并且不使表处于重组暂挂状态:
ALTER TABL
文档评论(0)