是否需要在int,bit,datetime ...字段中添加默认值?拥有默认值有什么好处?SQL数据库设计默认值
回答
如果你不允许在一个领域(特别是新添加到现有的表),空值是增加一个默认值是个好主意。如果不这样做,那么不包含新字段的现有INSERT代码将失败,因为该字段的值将被视为空。它在时间戳等领域也很有用,所以您不必在每个插入点上编写值。
-don
只有当字段被标记为不可为空时才有必要。好处是对于新行,您不必为每个字段明确输入值。在将新字段添加到现有模式时,这可能特别有用 - 您可以避免必须返回并更新所有代码。
编辑 - 对不起,这里就是我想的。添加非空表的字段时需要。 MySQL将为所有标记为不可为空的字段分配一个默认值;不确定关于SQL Server。
错误。只需在每个INSERT中指定一个非空值,并且不需要缺省值。方便,但不是必需的。 – 2010-01-06 03:44:54
Re:编辑:对。 – 2010-01-06 03:54:43
主要用途是强制你的领域模型,即如果一个列应该是零而不是空,并且如果该列被标记为不可空,那么它将需要一个默认值(最好)或者在应用程序层。
一个好处是,它可以简化您的代码(即不用担心处理空值)
位字段应该总是是非空的,并有一个默认的。
这没有必要。
如果您将列添加到包含现有数据的表中,则新列将被初始化。例如:你没有收集一些数据项目,然后你开始这样做。对于先前存在的记录,您需要“不适用”或零或其他内容。
如果你想为一列相同的值当插入行有一个默认的,你没有拼出来的SQL。例如:所有SO用户的声望为零。
默认约束意味着如果在INSERT或UPDATE语句中未提供值或NULL,则将使用DEFAULT约束值。
是否有必要让他们定义的?这完全取决于涉及的专栏的业务规则。
有用的原因有两个,如果你希望90%的条目具有相同的价值例如您可以将LANGUAGE列设为“EN”,并保存90%的用户输入两个字符。这是特别推荐的地方,如果LANGUAGE是空白的,则存在foriegn键关系,那么当强制引用完整性时插入会失败 - 或者如果对LANGUAGES表进行内部连接,行将消失。
其次 - 如上面所提到的表中增加一个新列以上时,你需要给它一个默认值,如果列不可为空。
- 1. SQL数据库设计中的默认值
- 2. 数据库设计:默认地址
- 3. 更改SQL数据库默认值
- 4. 空数据库值和默认值
- 5. 数据库设计SQL Server
- 6. SQL数据库设计
- 7. 设计SQL数据库
- 8. 设置数据库的默认值,如果值为空
- 9. Heroku和默认数据库设置
- 10. SQL默认值
- 11. SQL默认值
- 12. H2数据库默认值TIMESTAMP列
- 13. 具有默认值的SQLite数据库
- 14. 数据库架构,默认值是NOW()
- 15. activerecord:数据库默认值不生效
- 16. 默认字段值到MySQL数据库
- 17. 数据绑定 - 设置默认值
- 18. 导入MySQL数据库从.SQL设置默认表的MyISAM
- 19. 使用LINQ的数据库默认值到SQL codewise
- 20. SQL:数据库中的下拉菜单的默认值
- 21. 从C中确定SQL Server数据库列的默认值#
- 22. SQL Server安全性,只读为新数据库的默认值
- 23. Android:使用默认值的SQL数据库
- 24. 可以计算SQL默认值吗?
- 25. JPA:设置默认列值以在数据库中排序
- 26. 通过PostgreSQL将默认值设置为数据库中的列
- 27. 如何在数据库中设置sqldatasource默认值在c#中?
- 28. JAVA默认值设计原因
- 29. Oracle ODBC默认数据库
- 30. MySQL的默认数据库
如果我使用LINQ to SQL怎么办?不linq已经默认支持默认值? – forme 2010-01-06 03:52:39
我不知道。我从来没有用过linq,对不起。 – 2010-01-06 19:39:21