CREATE TABLE doc_exd ( column_a INT) GOINSERT INTO doc_exd VALUES (-1)GOALTER TABLE doc_exd WITH NOCHECK ADD CONSTRAINT exd_check CHECK (column_a > 1)GOEXEC sp_help doc_exdGODROP TABLE doc_exdGO

解决方案 »

  1.   

    不是的,也要起作用。不过,在对表中现有列添加 DEFAULT 定义时,默认情况下SQLServer 2000只对添加到表中的新数据行应用新默认值;而使用以前的 DEFAULT 定义插入的现有数据不受影响。
      

  2.   

    记录中的每一列均必须有值,即使它是 NULL。可能会有这种情况,当向表中装载新行时可能不知道某一列的值,或该值尚不存在。如果该列允许空值,就可以将该行赋予空值。由于有时不希望有可为空的列,因此如果合适,更好的解决办法可能是为该列定义 DEFAULT 定义。例如,通常将数字型列的默认值指定为零,将字符串列的默认值指定为暂缺。当将某行装载到为行定义了 DEFAULT 的表中时,若没有指定列值,则是隐性要求 Microsoft® SQL Server™ 2000 将默认值装载到该列中。说明  也可以使用 INSERT STATEMENT 语句 DEFAULT VALUES 子句显式要求 SQL Server 将默认值插入列中。
    如果列不允许空值且没有 DEFAULT 定义,就必须明确地指定列值,否则 SQL Server 会返回错误信息,指出该列不允许空值。将 DEFAULT 定义、为空性和对列值的插入归纳如下:
    列定义 |无输入,无 DEFAULT 定义 | 无输入,DEFAULT 定义 | 输入空值 
    允许空值 NULL 默认值 NULL 
    不允许空值 错误 默认值 错误 
      

  3.   

    记录中的每一列均必须有值,即使它是 NULL。可能会有这种情况,当向表中装载新行时可能不知道某一列的值,或该值尚不存在。如果该列允许空值,就可以将该行赋予空值。由于有时不希望有可为空的列,因此如果合适,更好的解决办法可能是为该列定义 DEFAULT 定义。例如,通常将数字型列的默认值指定为零,将字符串列的默认值指定为暂缺。当将某行装载到为行定义了 DEFAULT 的表中时,若没有指定列值,则是隐性要求 Microsoft® SQL Server™ 2000 将默认值装载到该列中。说明  也可以使用 INSERT STATEMENT 语句 DEFAULT VALUES 子句显式要求 SQL Server 将默认值插入列中。
    如果列不允许空值且没有 DEFAULT 定义,就必须明确地指定列值,否则 SQL Server 会返回错误信息,指出该列不允许空值。将 DEFAULT 定义、为空性和对列值的插入归纳如下:
    列定义      | 无输入,无 DEFAULT 定义 | 无输入,DEFAULT 定义 | 输入空值 
    -----------------------------------------------------------------------
    允许空值    |   NULL                 |   默认值             | NULL 
    不允许空值  |   错误                 |   默认值             |  错误 
    copy from sql server online book!