我有3个表:company
,case
和report
。
公司
CREATE TABLE IF NOT EXISTS `db`.`company` (
`name` VARCHAR(50) NOT NULL,
`password` VARCHAR(50) NOT NULL,
PRIMARY KEY (`name`))
ENGINE = InnoDB;
情况下:
CREATE TABLE IF NOT EXISTS `db`.`case` (
`id` VARCHAR(50) NOT NULL,
`image` VARCHAR(255) NULL,
`title` VARCHAR(100) NULL,
`description` VARCHAR(255) NULL,
`address` VARCHAR(255) NULL,
`date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`company_name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`company_name`, `id`),
CONSTRAINT `fk_case_company`
FOREIGN KEY (`company_name`)
REFERENCES `db`.`company` (`name`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
报告:
CREATE TABLE IF NOT EXISTS `db`.`report` (
`type` VARCHAR(50) NULL,
`image` VARCHAR(255) NULL,
`description` VARCHAR(255) NULL,
`approval` BINARY NULL DEFAULT 0,
`date` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`id` INT NOT NULL AUTO_INCREMENT,
`case_company_name` VARCHAR(50) NOT NULL,
`case_id` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`, `case_company_name`, `case_id`),
INDEX `fk_report_case1_idx` (`case_company_name` ASC, `case_id` ASC),
CONSTRAINT `fk_report_case1`
FOREIGN KEY (`case_company_name` , `case_id`)
REFERENCES `db`.`case` (`company_name` , `id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
当我使用case
:
phpMyAdmin
表格中插入一行时
所以外键正如我想象的那样工作。但是当我尝试在report
表中插入一行时,该行使用由2列组成的复合外键,它看起来像这样:
这是为什么?对我来说,看起来两个表之间没有连接,case_company_name
和case_id
只是常规列。
答案 0 :(得分:0)
很可能它只是意味着phpmyadmin不能以这种方式使用复合引用。
您可以使用SHOW CREATE TABLE report