Ràng buộc duy nhất cho phép các giá trị trống trong MySQL


125

Tôi có một lĩnh vực lưu trữ mã sản phẩm. Các mã là duy nhất, nhưng một số sản phẩm đơn giản là không có mã. Tôi không thể phát minh ra mã vì đó là mã nhà cung cấp.

Đây có phải là loại ràng buộc có thể có trong MySQL?

Tôi là một người mới với các thủ tục được lưu trữ và kích hoạt, vì vậy nếu giải pháp liên quan đến một trong những điều này, xin 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.



@AmirAliAkbari Thật buồn cười khi hai liên kết này với nhau là "có thể trùng lặp". Điều này là cũ hơn, mặc dù. :)
Pijusn

Câu trả lời:


182

Vâng, bạn có thể làm điều này. Xem tài liệu tham khảo MySQL (phiên bản 5.5) .

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


8
Cảm ơn. Tôi phải làm cho nó vô giá trị
The Disintegrator

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

13

Có, nếu bạn làm cho cột mã sản phẩm không thể bị hủy (không được khai báo NOT NULL), khóa duy nhất sẽ cho phép nhiều hàng có NULLmã sản phẩm.


Cảm ơn. Tôi phải làm cho nó vô giá trị
The Disintegrator

8

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


Cảm ơn. Tôi phải làm cho nó vô giá trị
The Disintegrator

@MianAnjum được in đậm: TẠO BẢNG table( keyint (11) KHÔNG NULL AUTO_INCREMENT, fieldtinyint (1) DEFAULT NULL )
Paul Nowak
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.