2014-07-07 104 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