Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Ràng buộc khóa chính MySql với tên

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'



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tạo lớp enum từ bảng với JOOQ

  2. Hàm PI () MySQL - Trả về giá trị của π (pi)

  3. Tìm các mẫu số tương tự trong bảng

  4. Kết xuất MySQL theo truy vấn

  5. gcc sẽ không biên dịch và chạy thư viện MySQL C