我試圖在表中添加主鍵並將其設置爲具有默認值並且不爲空的列並且不是唯一的.MySQL將該列接受爲主鍵......我想知道這是錯誤的,因爲如果用戶輸入2個記錄具有默認值,他將無法做到這一點..這是一個問題,其中SQL應該檢查列作爲非默認值或這是一個設計師最終問題,默認列不應該作爲主鍵。 。?向表中添加主鍵是否檢查默認列?
回答
空:
每一個被室內用標記NULL列只是指定該列可以包含NULL值。該列仍可以有另一個默認值。
主鍵:
- 一個PK始終被視爲唯一的,你不能有連續兩個相同的值
- 只能有每個表中的一個PK,其主要的指數,這是非常快的時候在主列上查詢表格。
- PK總是單列,不能像其他索引(唯一索引或常用索引)那樣分佈在多個列中。
- 一個PK列不能接受NULL值
樣品:
ID (INT, PK) | Name (varchar)
1 | Foo ->Valid
2 | Bar ->Valid
2 | FooBar ->Invalid (Duplicate Primary key value ID)
結論:是的MySQL應該和將在第二次嘗試把一個默認值拋出一個錯誤,因爲它的簡單處理後唯一的,給定的默認值是const。當您的insert語句中沒有爲此列指定任何值時,MySQL服務器將嘗試插入默認值。
差不多指:用默認值的PrimaryKey的列是沒有意義的,除非你使用一個自動增加這是一個僞「默認值」每次嘗試插入一些時間,這是不同的。
我希望這回答您的問題
我不完全理解的問題。您已經聲明一欄,是具有這些特徵的主鍵:
- NOT NULL
- 默認值
主鍵強加這些特點:
- NOT NULL
- 獨特
這些特徵並不相互矛盾。唯一的問題是默認值只能在列中分配一次。第二次嘗試插入具有默認值的行時,將會違反唯一性約束。
換句話說,MySQL的(我認爲其他數據庫一樣)讓你聲明這個即使看起來是一個好主意,它不會。
我試圖複製更多,發現如果只有一個默認的列記錄存在,那麼SQL不會顯示錯誤,並接受該列作爲更新的主鍵....但如果存在多個記錄SQL將提示錯誤,像任何其他約束違反 – 2014-12-09 12:56:07
@AmanVerma。 。 。這是這種聲明的正確行爲。 – 2014-12-09 13:27:21
- 1. 查詢添加默認值,如果表中的列是空的
- 2. 檢查JComboBox是否具有默認值
- 3. 檢查默認打印機是與否
- 4. 向MySQL數據庫中的表添加一列,默認值爲
- 5. 是否可以檢查Informix表是否有主鍵
- 6. 檢查用戶的默認模式中是否存在表格?
- 7. 在SQL表中添加主鍵列
- 8. 是否可以向listGrid過濾器添加默認文本?
- 9. 檢查主鍵是否存在
- 10. 檢查是否爲一個主鍵SQL
- 11. 我可以檢查SQLite表中是否存在主鍵? [python]
- 12. T-SQL檢查主鍵是否存在於重複表中
- 13. SAPUI5 - 是否可以設置默認的選擇列表鍵?
- 14. 如何檢查列的默認約束是否存在?
- 15. 添加列的默認值
- 16. 添加默認列結果
- 17. 是否應該將主鍵始終添加到innodb表中?
- 18. Mysql腳本檢查列表是否存在或在表中添加列之前
- 19. 如何檢查字段是否是加載表中的外鍵?
- 20. 檢查表是否存在並且具有默認值
- 21. Eclipse - 默認鍵盤快捷鍵列表
- 22. 如何檢查頁腳是否已添加到列表視圖?
- 23. 如何檢查列是否添加到谷歌電子表格
- 24. 檢查列表是否可以添加/刪除項目?
- 25. 添加guid默認值約束到sql主鍵不起作用
- 26. 如果ID列是主鍵,是否需要在mySQL表上添加索引?
- 27. 我想檢查sqlite表上是否存在主鍵
- 28. 如何檢查表是否有主鍵值的記錄?
- 29. PHP MySQL檢查一個表是否有主鍵
- 30. 我們是否需要將主鍵添加到多列索引?
甲'初級key'意味着所有的值應'unique'和'未null'。 – 2014-12-09 12:23:13
此外,「主鍵」應明確標識表中的每條記錄。 – 2014-12-09 12:24:04
如果用戶將主鍵添加爲具有默認值的列... SQL是否應該將它提示爲錯誤或不是? – 2014-12-09 12:28:00