如何在表中有多个外键时插入数据

时间:2015-05-22 18:16:13

标签: mysql foreign-keys foreign-key-relationship

如果表中有多个外键,如何插入数据 表示包含患者,医生和工作人员的数据库 患者:必须与患者预约 医生:每次预约都必须有医生

我的问题如何在约会中插入数据和同时在医生,医生等其他相关表格中插入数据?

请举个例子?

CREATE TABLE IF NOT EXISTS `doctor` (
  `doctor_id` int(11) NOT NULL AUTO_INCREMENT,
  `doc_name` varchar(100) NOT NULL,
  `contactNum` varchar(100) NOT NULL,
  `email` varchar(100) NOT NULL,
  `qulification` varchar(100) NOT NULL,
  `joiningDate` varchar(50) NOT NULL,
  `u_id` int(11) NOT NULL,
  PRIMARY KEY (`doctor_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

医生 doctor_id:1 doctor_name:阿里 Qulification:mbbs

CREATE TABLE IF NOT EXISTS `patient` (
  `patient_id` int(11) NOT NULL AUTO_INCREMENT,
  `Name` varchar(100) NOT NULL,
  `sex` varchar(11) NOT NULL,
  `diagnosis` text NOT NULL,
  `DOB` varchar(100) NOT NULL,
  `address` varchar(200) NOT NULL,
  `Contact_No` varchar(111) NOT NULL,
  PRIMARY KEY (`patient_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

patient

patient_id:1 姓名:Ahmed Zubair 性别男 诊断:测试 DOB:2000年6月20日 地址:伊斯兰堡

CREATE TABLE appointment 
(
  appointment_id int NOT NULL,
  doctor_id int NOT NULL,
  patient_id int NOT NULL,
  Date int NOT NULL,
  time int,

  PRIMARY KEY (appointment_id),
  CONSTRAINT fk_ap_pa_id FOREIGN KEY (patient_id) REFERENCES patient(patient_id),
  CONSTRAINT fk_ap_do_id FOREIGN KEY (doctor_id) REFERENCES doctor (doctor_id)
);

1 个答案:

答案 0 :(得分:0)

如第一条评论中所述,您需要先将记录插入patientdoctor表,然后才能插入约会记录。如果这些需要在单个操作中发生(例如,所有成功或全部失败),则将insert语句包装在事务中。

我没有MySQL实例可以完全审核所需的代码,所以我无法发布,但请遵循以下流程:

  1. 插入您的doctor记录
  2. 将使用LAST_INSERT_ID()生成的主键保存到本地变量
  3. 插入您的patient记录
  4. 使用与步骤2相同的过程将此主键保存到新变量中
  5. 现在您可以在语句中使用这两个变量来插入约会记录,以确保您满足外键
  6. 再次......如果这是一个原子操作,那么将这些语句包装在一个事务中,该事务包括您的情况所需的任何验证或错误检查。

    有关此处LAST_INSERT_ID()的更多信息 - https://stackoverflow.com/a/17112962/571237