如何使用三个主表为同一个子表添加三个外键?

时间:2011-10-07 08:29:55

标签: mysql foreign-key-relationship database master-detail

这里我的数据库中有四个名为test_center的表。那些是:

  1. test_user - > PK = u_id
  2. test_metadata - > PK = test_id
  3. student_detail - > PK = Student_id
  4. test_records - > PK = test_record_id(子表)
  5. 表4是儿童表,1,2,3是主人 我正在尝试test_records表从每个主表中获得三个外键,但它显示如下错误。 (我使用的是MySQL Workbench 5.0和MySQL服务器)

      

    错误1005:无法创建表'test_center。#sql-aa4_12'(错误号:121)

    SQL语句:

    ALTER TABLE `test_center`.`test_records` 
      ADD CONSTRAINT `Student_id`
      FOREIGN KEY (`Student_id` )
      REFERENCES `test_center`.`student_detail` (`Student_id` )
      ON DELETE CASCADE
      ON UPDATE CASCADE, 
      ADD CONSTRAINT `test_id`
      FOREIGN KEY (`test_id` )
      REFERENCES `test_center`.`test_metadata` (`test_id` )
      ON DELETE CASCADE
      ON UPDATE CASCADE, 
      ADD CONSTRAINT `u_id`
      FOREIGN KEY (`u_id` )
      REFERENCES `test_center`.`test_user` (`u_id` )
      ON DELETE CASCADE
      ON UPDATE CASCADE
    
      

    错误:运行故障回复脚本时出错。细节如下。   错误1046:未选择数据库

    SQL语句:

    CREATE TABLE `test_records` (
      `test_record_id` int(11) NOT NULL AUTO_INCREMENT,
      `test_name` varchar(45) NOT NULL,
      `Result` float NOT NULL,
      `status` varchar(45) NOT NULL,
      `Student_id` varchar(45) NOT NULL,
      `u_id` int(11) NOT NULL,
      `test_id` int(11) NOT NULL,`enter code here`
      PRIMARY KEY (`test_record_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1
    

1 个答案:

答案 0 :(得分:1)

您的查询无法识别数据库。您需要告诉MySQL使用哪个数据库:

USE database_name;
在创建表之前

。如果数据库不存在,则需要将其创建为:

CREATE DATABASE database_name;

接着是

 USE database_name;