翻譯|使用教程|編輯:吳園園|2020-05-29 09:28:45.653|閱讀 256 次
概述:第1部分探討了MySQL的嚴格SQL模式的后果,以及如何使用Navicat for MySQL 15對其進行查看和設置。今天的后續文章中,我們將討論何時使用默認值以及如何提出默認值。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Navicat for MySQL是一套管理和開發 MySQL 或 MariaDB 的理想解決方案。數據傳輸、數據同步和結構同步讓你以低成本輕松快速地遷移數據。提供詳細的指引,在各種數據庫之間傳輸數據。比對和同步數據庫的數據和結構。只需幾秒鐘就能設置和部署比對,并獲得你要運行更改的詳細腳本。
第2部分:何時使用它們
您可能已經知道,在非null列上設置默認值有助于擺脫那些討厭的“字段'xyz'沒有默認值”錯誤。希望您也意識到,保持錯誤信息本身并不是提供默認值的有效理由。提供默認列值的原因很多-有些很好,有些則更少。第1部分探討了MySQL的嚴格SQL模式的后果,以及如何使用Navicat for MySQL 15對其進行查看和設置。在今天的后續博客中,我們將討論何時使用默認值以及如何提出默認值。
為什么不只允許空值?
可空列不像非空列那樣面臨相同的挑戰,那么為什么不在所有非鍵列中都允許空值呢?在許多情況下,將非null約束應用于列的目的是迫使填充它的應用程序或系統提供值。有時,非空列可能包含審核信息,例如用戶ID或時間戳。無論哪種情況,您都在尋找有效的數據,而不僅僅是填充。
這是一個重要的考慮因素,因為它帶動了生成有用的默認值以及前端驗證的重要性。我仍然記得我的第一個Web應用程序。它收集了用戶詳細信息,例如姓名,電子郵件和電話號碼。所有這些字段都是必填字段,因此聰明的用戶找到了各種規避輸入真實信息的方法,例如輸入電話號碼111-111-1111和“ Elmer J. Fudd”之類的名稱。
產生時間戳記
現在,我們已經討論了一些原因,為什么隨時可以自動填充字段值得這樣做,讓我們來看一個生成值的常見示例:審計時間戳記。
中的某些表具有last_update列。這些應用時間戳數據類型;其值設置為MySQL CURRENT_TIMESTAMP函數的輸出。在Navicat(高級功能如下圖所示)中,您可以通過下拉列表設置默認值:
該默認值設置上記錄創建時間戳,而檢查在更新CURRENT_TIMESTAMP框告訴MySQL更新每次更新操作的時間戳。
前哨值
在RDBMS中,前哨值是具有特殊含義的值。例如,年齡列中的值999表示它是未知的。我還看到了使用“ 1900-01-01”作為未知日期的應用程序。前哨值在您要分配“未知”值的情況下很有用,而空值表示“無值”。并不是每個人都喜歡哨兵值,因為使用數據庫的人員和應用程序必須知道所有哨兵值才能正確處理它們。
結論
盡管默認值(并作為擴展名)在組織良好的數據庫設計和開發中具有前哨值,但在分配值之前,應考慮每個值的用途。僅僅依靠默認值來避免使用null可能不是一個足夠好的理由。
有想要購買正版授權的朋友,歡迎本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: