mysql的not null 細節請教

來源:互聯網
上載者:User
比如這樣的一條sql ddl語句:
password char(32) not null default "",//有md5


既然都定義了not null了,那麼使用者就強制必要添加密碼了,那後面來個預設值是不是有點多餘?而且我長度規定是32位,預設值是空,

感覺有not null 的時候,預設值,沒有存在的必要,就算存在,他的值屬性也不合欄位的屬性約定啊?求解!


回複討論(解決方案)

恰恰相反

在not null的時候如果你不輸入東西 就按預設的輸入

換句話說 你設定not null了最好(必須)設定default

毫不相干!

password 只是一個名字而已,對於資料庫而言沒有任何意義

not null default "" 的目的在於:如果沒有對其賦值,在取預設值為空白串。即插入時可預設該項
如果僅 not null,那麼插入時該項必須有值,否則出錯

如果約定 password 必須有值,那麼定義時應為
password char(32) not null,
而不是
password char(32) not null default "",

習慣上都給個default的

毫不相干!

password 只是一個名字而已,對於資料庫而言沒有任何意義

not null default "" 的目的在於:如果沒有對其賦值,在取預設值為空白串。即插入時可預設該項
如果僅 not null,那麼插入時該項必須有值,否則出錯

如果約定 password 必須有值,那麼定義時應為
password char(32) not null,
而不是
password char(32) not null default "",
正解,你的需求是:
password char(32) not null

若加上default “”,在你不傳值的情況下,資料庫會儲存長度為0的字串""。
null != “”

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.