代码之家  ›  专栏  ›  技术社区  ›  GordyII

SQL Server 2000-varchar字段的默认值

  •  4
  • GordyII  · 技术社区  · 17 年前

    我有一个SQL Server nvarchar字段,其中“默认值或绑定”为空字符串。它也恰好是一个非空字段。

    这是否意味着没有默认值,或者它是没有字符的字符串的默认值。

    如果我不插入一个值,它是用空字符串插入还是用“非空”错误失败?

    4 回复  |  直到 16 年前
        1
  •  3
  •   Noon Silk    17 年前

    默认值为空字符串。

    如果不提供值,插入将成功,并且值将为空,而不是空。

        2
  •  3
  •   Sam Saffron James Allen    17 年前

    它与(假设数据是相关列)相同:

    create table #t (id int, data varchar(100) not null default(''))
    

    所以:

    insert into #t (id) values (1) 
    insert into #t (id,data) values (2,default) 
    insert into #t (id,data) values (3, 'allowed') 
    
    select * from #t 
    

    将返回

    1
    2
    3 allowed 
    

    并且…

    insert into #t (id,data) values (1, null) 
    -- will error 
    
        3
  •  1
  •   TimothyAWiseman    17 年前

    如果您有一个真正的空字符串作为默认值,那么它将自动填充一个0长度的字符串。

    您应该小心确保它是一个0长度的字符串,而不是什么都没有。例如,如果您在表生成器GUI中查找SSM,并且“默认值或绑定”显示为空白,则意味着没有默认值,如果不填充,则插入将失败。如果希望它有一个0长度的字符串,请用“”填充它(两个单引号加在一起,中间没有任何引号)。

        4
  •  0
  •   OpenSource    17 年前

    列的默认值只是-SQL Server将在不为该列提供值时放置该值。列中的值将是空字符串。不会发生非空错误