2009-08-28 30 views
114

Tôi có một trường lưu trữ mã sản phẩm. Các mã là duy nhất, nhưng một số sản phẩm chỉ đơn giản là không có mã. Tôi không thể phát minh ra mã vì đó là mã của nhà cung cấp.Ràng buộc duy nhất cho phép giá trị trống trong MySQL

Loại ràng buộc này có thể xảy ra trong MySQL không?

Tôi là một noob với các thủ tục và trình kích hoạt được lưu trữ, vì vậy nếu giải pháp liên quan đến một trong các cách này, hãy kiên nhẫn.

Cập nhật: Cột KHÔNG Null. Đó là lý do tại sao tôi không thể làm điều này.

+0

Bản sao có thể có của [MySQL có bỏ qua các giá trị null trên các ràng buộc duy nhất không?] (Http://stackoverflow.com/questions/3712222/does-mysql-ignore-null-values-on-unique-constraints) –

+0

@AmirAliAkbari It's vui như thế nào hai liên kết với nhau là "có thể trùng lặp". Cái này cũ hơn. :) – Pijusn

Trả lời

174

Có, bạn có thể thực hiện việc này. Xem số MySQL reference (version 5.5).

Chỉ mục UNIQUE tạo ra ràng buộc sao cho tất cả các giá trị trong chỉ mục phải khác biệt. Một lỗi xảy ra nếu bạn cố gắng thêm hàng mới có giá trị khóa khớp với hàng hiện có. Đối với tất cả các công cụ, một chỉ số UNIQUE cho phép nhiều giá trị NULL cho các cột có thể chứa NULL.

+7

Cảm ơn. Tôi phải làm cho nó nullable –

+0

có vấn đề này trong mô hình django. Làm cho nó hoạt động nullable. Cảm ơn – Shrey

8

MySQL vẫn cho phép nhiều hàng có giá trị NULL trong một cột duy nhất.

+0

Cảm ơn bạn. Tôi phải làm cho nó vô hiệu hóa –

+0

Làm thế nào nó có thể? –

+0

@MianAnjum in đậm: TẠO TABLE 'bảng' (' khóa' int (11) NOT NULL AUTO_INCREMENT, 'trường' tinyint (1) ** DEFAULT NULL **) –

13

Có, nếu bạn làm cho cột mã sản phẩm có thể vô hiệu hóa (không khai báo với NOT NULL), khóa duy nhất sẽ cho phép nhiều hàng có mã sản phẩm NULL.

+0

Cảm ơn. Tôi phải làm cho nó vô hiệu –

Các vấn đề liên quan