Nó giống như MySQL bỏ qua CONSTRAINT pk_PersonID
phần. Bạn có thể kiểm tra bằng cách tạo bảng và sau đó kết xuất bảng hoặc phát hành SHOW CREATE TABLE Persons
.
Tôi đoán nó chỉ hỗ trợ cú pháp này để tương thích với các máy chủ SQL khác (nhưng bỏ qua nó cho các khóa chính và cục bộ khác) và không lưu trữ thông tin của nó (tên ràng buộc).
Tuy nhiên, để sử dụng với các khóa ngoại, CONSTRAINT
từ khóa cũng được sử dụng trong MySQL.
mysql> CREATE TABLE test.Persons (
-> P_Id int NOT NULL,
-> LastName varchar(255) NOT NULL,
-> FirstName varchar(255),
-> Address varchar(255),
-> City varchar(255),
-> CONSTRAINT pk_PersonID PRIMARY KEY (P_Id)
-> );
Query OK, 0 rows affected (0.50 sec)
server$ mysqldump -p test Persons
Enter password:
--
-- Table structure for table `Persons`
--
DROP TABLE IF EXISTS `Persons`;
CREATE TABLE `Persons` (
`P_Id` int(11) NOT NULL,
`LastName` varchar(255) NOT NULL,
`FirstName` varchar(255) DEFAULT NULL,
`Address` varchar(255) DEFAULT NULL,
`City` varchar(255) DEFAULT NULL,
PRIMARY KEY (`P_Id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Đây cũng là bài kiểm tra để chứng minh MySQL không lưu tên ràng buộc ở bất kỳ đâu và không sử dụng nó khi in lỗi (như đã đề cập đối với các máy chủ SQL khác trong câu hỏi Mục đích của việc đặt tên cho ràng buộc là gì :
mysql> insert into Persons (P_Id) values(1);
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> insert into Persons (P_Id) values(1);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'