Mysql
 sql >> база данни >  >> RDS >> Mysql

Ограничение на първичния ключ MySql с име

Това е същото като MySQL игнорира CONSTRAINT pk_PersonID част. Можете да проверите, като създадете таблицата и след това я изхвърлите или издадете SHOW CREATE TABLE Persons .

Предполагам, че поддържа този синтаксис само за съвместимост с други SQL сървъри (но го игнорира за първични и други локални ключове) и не съхранява информацията му (името на ограничението).

Но за използване с външни ключове CONSTRAINT ключова дума се използва и в 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;

Ето също тест, за да докаже, че MySQL не съхранява името на ограничението никъде и не го използва при печатни грешки (както е споменато за други въпросни SQL сървъри Каква е целта на именуването на ограничения :

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. Доктрина и композитни уникални ключове

  2. MySQL GROUP_CONCAT избягва

  3. Базата данни не се актуализира автоматично с MySQL и Python

  4. Изчисляване на размера на InnoDB буферния пул за вашия MySQL сървър

  5. java.sql.SQLException:Няма избрана база данни