ข้อ จำกัด เฉพาะที่อนุญาตให้มีค่าว่างใน MySQL


125

ฉันมีฟิลด์ที่เก็บรหัสผลิตภัณฑ์ รหัสไม่ซ้ำกัน แต่ผลิตภัณฑ์บางอย่างไม่มีรหัส ฉันประดิษฐ์รหัสไม่ได้เพราะเป็นรหัสผู้ให้บริการ

ข้อ จำกัด แบบนี้เป็นไปได้ไหมใน MySQL

ฉันเป็น noob ที่มีขั้นตอนการจัดเก็บและทริกเกอร์ดังนั้นหากการแก้ปัญหาเกี่ยวข้องกับข้อใดข้อหนึ่งโปรดอดใจรอ

อัปเดต: คอลัมน์ไม่เป็นโมฆะ นั่นเป็นเหตุผลที่ฉันไม่สามารถทำสิ่งนี้ได้



@AmirAliAkbari มันตลกที่ทั้งสองเชื่อมโยงกันว่า "เป็นไปได้ซ้ำกัน" อันนี้เก่ากว่าแม้ว่า :)
Pijusn

คำตอบ:


182

ใช่คุณสามารถทำได้ ดูอ้างอิง MySQL (เวอร์ชั่น 5.5)

ดัชนี UNIQUE สร้างข้อ จำกัด เพื่อให้ค่าทั้งหมดในดัชนีต้องแตกต่างกัน ข้อผิดพลาดเกิดขึ้นหากคุณพยายามเพิ่มแถวใหม่ด้วยค่าคีย์ที่ตรงกับแถวที่มีอยู่ สำหรับเอ็นจิ้นทั้งหมดดัชนี UNIQUE อนุญาตให้มีค่า NULL หลายค่าสำหรับคอลัมน์ที่สามารถมี NULL ได้


8
ขอบคุณ ฉันต้องทำให้มันว่างเปล่า
The Disintegrator

มีปัญหานี้ในโมเดล django ทำให้งานเป็นโมฆะ ขอบคุณ
Shrey

13

ใช่ถ้าคุณทำให้คอลัมน์รหัสผลิตภัณฑ์เป็นโมฆะ (ไม่ได้ประกาศด้วยNOT NULL) คีย์ที่ไม่ซ้ำกันจะอนุญาตให้มีหลายแถวที่มีNULLรหัสผลิตภัณฑ์


ขอบคุณ ฉันต้องทำให้มันว่างเปล่า
The Disintegrator

8

MySQL ยังคงอนุญาตให้หลายแถวมีค่าNULLในคอลัมน์ที่ไม่ซ้ำกัน


ขอบคุณ ฉันต้องทำให้มันว่างเปล่า
The Disintegrator

@MianAnjum ตัวหนา: สร้างตารางtable( keyint (11) NOT NULL AUTO_INCREMENT, fieldtinyint (1) DEFAULT NULL )
Paul Nowak
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.