是否需要在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. 空數據庫值和默認值
- 6. 計算機重新啓動後數據庫值應該設置爲默認值
- 7. SQL Server登錄的默認數據庫
- 8. 設計SQL Server數據庫
- 9. 數據庫設計SQL Server
- 10. 數據庫設計SQL
- 11. 設計SQL數據庫
- 12. SQL數據庫設計
- 13. 設置數據庫的默認值,如果值爲空
- 14. Heroku和默認數據庫設置
- 15. 在oracledb中設置默認數據庫
- 16. 設置默認值電源設計師
- 17. SQL默認值
- 18. SQL默認值
- 19. 數據庫架構,默認值是NOW()
- 20. 具有默認值的SQLite數據庫
- 21. 默認值正在提交數據庫
- 22. 默認字段值到MySQL數據庫
- 23. activerecord:數據庫默認值不生效
- 24. H2數據庫默認值TIMESTAMP列
- 25. 計劃默認值函數
- 26. 動態設置數據集默認值
- 27. 數據綁定 - 設置默認值
- 28. 導入MySQL數據庫從.SQL設置默認表的MyISAM
- 29. SQL函數和默認值
- 30. Azure SQL數據庫管理門戶 - 默認列值
如果我使用LINQ to SQL怎麼辦?不linq已經默認支持默認值? – forme 2010-01-06 03:52:39
我不知道。我從來沒有用過linq,對不起。 – 2010-01-06 19:39:21