2014-07-07 106 views
0

我有3个表格:company,casereport复合外键INSERT

公司:

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

enter image description here

所以外键工作,我的想象。但是,当我尝试在report表,这是使用复合外键由2列中插入一行时,它看起来是这样的:

enter image description here

这是为什么?对我来说,看起来两个表之间没有连接,case_company_namecase_id只是常规列。

回答

0

大多数情况下,这只意味着phpmyadmin不能以这种方式使用复合引用。 您可以使用SHOW CREATE TABLE report