2010-08-17 31 views
9

Tại sao NOT NULL thêm vào lĩnh vực khóa chính (primary key là đã không null + độc đáo)(MySql) Tại sao NOT NULL thêm vào trường khóa chính? ?

Ví dụ cho trường id NOT NULL:

create table student 
(
id int(11) AUTO_INCREMENT NOT NULL, 
name varchar(255), 
PRIMARY KEY(id) 
) 

Thay vì chỉ:

create table student 
(
id int(11) AUTO_INCREMENT, 
name varchar(255), 
PRIMARY KEY(id) 
) 

Chỉnh sửa: Tôi thêm AUTO_INCREMENT.

Trả lời

12

Chúng giống nhau. Khóa chính có số NOT NULLtự động.

+0

soo tại sao peaple thêm NOT NULL ?? – Yosef

+0

@Yosef đây chỉ là vấn đề về phong cách. Và 'mysqldump' thêm này' NOT NULL' khi đổ một bảng, vì một lỗi cho phép NULL trong mysql. –

3

NULL không tương đương với NULL (như NULL chỉ ra một giá trị không biết hoặc vắng mặt), vì vậy bạn sẽ được phép có nhiều hồ sơ mà có NULL cho id, mặc dù có một khóa chính/hạn chế duy nhất được xác định, vì thế mà sử dụng NOT NULL. Đó là nếu MySql thậm chí cho phép bạn xác định một khóa chính trên một trường nullable.

Ngoài ra, dưới dạng khóa chính thường được sử dụng trong khóa ngoài trong các bảng khác, có một hoặc nhiều giá trị NULL sẽ không có ý nghĩa.

+1

'NULL' trên 'PRIMARY KEY' vi phạm tiêu chuẩn ISO và được coi là lỗi trong mysql: http://bugs.mysql.com/bug.php?id=390. Xem http://en.wikipedia.org/wiki/Unique_key để giải thích NOT NULL –

5

Bạn đang hỏi, tại sao mọi người lại bận tâm thêm NOT NULL khi không cần thiết? Chỉ vì nó là phong cách tốt, tôi đoán vậy. Và làm cho nó rõ ràng cho người đọc.

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