关于 index 与 not null

作者:vkvi 来源:ITPOW(原创) 日期:2007-8-9

这个问题是从 CSDN 上转过来的(为了规范和方便阅读,对格式作了适当调整),原文见:http://topic.csdn.net/t/20050223/09/3799639.html

问题

  各位前辈,我想把一个字段的属性从 null 改为 not null,结果这个字段上有个 index,这样就不让改是怎么回事啊?
  表中数据量巨大,如果把 index 先 drop 掉,改完属性后再把 index 加上,非常麻烦的  
  谢谢

解答

在 SQL Server 2000 联机丛书上有这么一句话:

只有当现有列不存在空值及该列不存在索引时,才可以将该列更改为不允许空值。

由此看出,要由 null 到 not null,是必定不能让索引存在的,方法有多种,但核心的思想都是:给没有索引的字段设置 not null,加上索引。给出SQL Server 2000 联机丛书上的一种解决方案:

  1. 添加具有 DEFAULT 定义的新列,插入有效值代替空值。
  2. 将原有列中的数据复制到新列中。
  3. 删除旧列。  

关于数据量大的问题,我觉得只有一个字:等!不要动鼠标键盘,避免程序被当掉。

相关文章