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