Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL: ดู Cascade Constraints ด้วย SHOW CREATE TABLE

การตรวจสอบ Foreign Key Cascade ด้วย SHOW CREATE TABLE

คำสั่ง SHOW CREATE TABLE แสดงคำสั่ง CREATE TABLE ที่สมบูรณ์ รวมถึง constraints, indexes, foreign keys และ ON DELETE/UPDATE CASCADE actions

สร้างตารางพร้อม Constraints

mysql> create table DemoTable1378 (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> EmployeeId varchar(20),
    -> EmployeeFirstName varchar(20),
    -> EmployeeLastName varchar(20),
    -> EmployeeCountryName varchar(40),
    -> EmployeeAge int,
    -> EmployeeSalary int,
    -> UNIQUE(EmployeeFirstName, EmployeeSalary),
    -> INDEX First_Last_NameIndex(EmployeeFirstName, EmployeeLastName)
    -> );
Query OK, 0 rows affected (0.93 sec)

คำสั่ง SHOW CREATE TABLE

mysql> show create table DemoTable1378;

ผลลัพธ์ (จัดรูปแบบใหม่เพื่ออ่านง่าย)

CREATE TABLE `demotable1378` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `EmployeeId` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  `EmployeeFirstName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  `EmployeeLastName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL,
  `EmployeeCountryName` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL,
  `EmployeeAge` int(11) DEFAULT NULL,
  `EmployeeSalary` int(11) DEFAULT NULL,
  PRIMARY KEY (`Id`),
  UNIQUE KEY `EmployeeFirstName` (`EmployeeFirstName`, `EmployeeSalary`),
  KEY `First_Last_NameIndex` (`EmployeeFirstName`, `EmployeeLastName`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

สังเกต: ไม่มี Foreign Key ในตัวอย่างนี้

ตัวอย่างตารางนี้มีเพียง PRIMARY KEY, UNIQUE KEY, และ INDEX เท่านั้น หากมี Foreign Key จะปรากฏในส่วน CONSTRAINT ... FOREIGN KEY ... REFERENCES ... ON DELETE CASCADE

ตัวอย่างตารางที่มี CASCADE

CREATE TABLE `orders` (
  `id` INT PRIMARY KEY,
  `customer_id` INT,
  CONSTRAINT `fk_customer` FOREIGN KEY (`customer_id`) 
    REFERENCES `customers`(`id`) 
    ON DELETE CASCADE
    ON UPDATE CASCADE
) ENGINE=InnoDB;

คำสั่งอื่นสำหรับดู Constraints

  • SHOW TABLE STATUS LIKE 'table_name' — ดู comment, engine, auto_increment
  • SELECT * FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_NAME = 'table_name' — รายละเอียด constraints ทั้งหมด
  • SELECT * FROM information_schema.REFERENTIAL_CONSTRAINTS WHERE TABLE_NAME = 'table_name' — Foreign keys เท่านั้น

หมายเหตุ: SHOW CREATE TABLE เป็นวิธีที่รวดเร็วและครบถ้วนที่สุดสำหรับดูโครงสร้างตารางทั้งหมดในครั้งเดียว