是否需要为int,bit,datetime ...字段添加默认值?拥有默认值有什么好处?
答案 0 :(得分:1)
仅当字段标记为不可为空时才有必要。好处是,对于新行,您不必为每个字段显式输入值。在向现有架构添加新字段时,这尤其有用 - 您可以避免返回并更新所有代码。
编辑 - 对不起,这就是我的想法。添加不可空的字段到非空表时,这是必要的。 MySQL将为标记为不可为空的所有字段分配默认值;不确定SQL Server。
答案 1 :(得分:1)
没有必要。
如果向具有现有数据的表添加列,则将初始化新列。示例:您暂时没有收集某些数据项,然后您就开始这样做了。对于预先存在的记录,您需要“N / A”或零或其他。
如果在插入行时希望列具有相同的值并且存在默认值,则不必在SQL中将其拼写出来。示例:所有SO用户都以零信誉开始。
答案 2 :(得分:1)
默认约束只是意味着如果在INSERT或UPDATE语句中没有提供值或NULL,则将使用DEFAULT约束值。
是否有必要定义它们?这完全取决于所涉及的列的业务规则。
答案 3 :(得分:0)
如果您不允许字段中的空值(尤其是添加到现有表中的新值),则最好添加默认值。如果不这样做,则不包含新字段的现有INSERT代码将失败,因为该字段的值将被视为null。它在像时间戳这样的字段上也很有用,所以你不必在每个插入上编码值。
-don
答案 4 :(得分:0)
主要用途是强制执行域模型,即如果列应为零而不是null,并且如果列标记为不可为空,那么它将需要默认值(首选)或在应用程序中强制执行层
一个好处是它简化了代码(即不用担心处理空值)
位字段应该几乎总是不可为空并且具有默认值。
答案 5 :(得分:0)
有用的原因有两个:如果您希望90%的条目具有相同的值,例如您可以将LANGUAGE列默认为“EN”,并保存90%的用户输入两个字符。如果LANGUAGE为空,则特别推荐存在foriegn密钥关系,然后在强制执行引用完整性时插入将失败 - 或者如果对LANGUAGES表进行内部连接,则行将消失。
其次 - 如上所述,在向表中添加新列时,如果列不可为空,则需要为其指定默认值。