更改具有非唯一非聚集索引的 table 以添加列
Alter a table which has non-unique non-clustered index to add a column
我有一个名为 Person
的 table,它已经有一些非唯一的非聚集索引和一个聚集索引(基于主键)。
我要写两个查询:
我需要更改 table 以添加列 birthplace
。写 alter table person add birthplace varchar(128) not null
时是否需要检查任何索引?
我的下一个要求是我有另一个名为 cityCode narvar(10)
的列。我需要将其包含在我现有的非唯一、非聚集索引中。我应该如何编写脚本?我应该删除我的索引并重新创建它吗?
求推荐。我能找到一些相关问题,但不清楚 non-unique non-clustered
index.
alter table person add birthplace varchar(128) not null
请注意,当您指定没有默认值的 not null
时,您会收到错误消息。建议添加默认值。但如果您不能考虑任何一个,则将列添加为可为空,然后稍后更新它。最后使用以下代码使其成为 NOT NULL
:
alter table person Alter column birthplace varchar(128) not null
如果您想将新列包含到现有索引中,请使用 CREATE INDEX
和 DROP_EXISTING
选项。性能更高效。为此,
生成一个创建索引脚本,然后通过将新列添加到索引的列列表来修改脚本,然后将其添加到 CREATE INDEX
语句的末尾。
WITH (DROP_EXISTING = ON)
我有一个名为 Person
的 table,它已经有一些非唯一的非聚集索引和一个聚集索引(基于主键)。
我要写两个查询:
我需要更改 table 以添加列
birthplace
。写alter table person add birthplace varchar(128) not null
时是否需要检查任何索引?我的下一个要求是我有另一个名为
cityCode narvar(10)
的列。我需要将其包含在我现有的非唯一、非聚集索引中。我应该如何编写脚本?我应该删除我的索引并重新创建它吗?
求推荐。我能找到一些相关问题,但不清楚 non-unique non-clustered
index.
alter table person add birthplace varchar(128) not null
请注意,当您指定没有默认值的 not null
时,您会收到错误消息。建议添加默认值。但如果您不能考虑任何一个,则将列添加为可为空,然后稍后更新它。最后使用以下代码使其成为 NOT NULL
:
alter table person Alter column birthplace varchar(128) not null
如果您想将新列包含到现有索引中,请使用 CREATE INDEX
和 DROP_EXISTING
选项。性能更高效。为此,
生成一个创建索引脚本,然后通过将新列添加到索引的列列表来修改脚本,然后将其添加到 CREATE INDEX
语句的末尾。
WITH (DROP_EXISTING = ON)