如何在表中插入多个外键时,指的是包含病人、医生和职员病人的数据库:预约必须与病人一起进行,医生:每次预约都必须有医生
我的问题是,如何在预约和其他相关表格中同时插入数据,比如病人、医生?
请给我举个例子。
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 : Ali量化: 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性行为:男性诊断:道布测试: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)
);
发布于 2015-05-22 18:34:50
正如第一个注释中提到的,您需要首先将记录插入到patient
和doctor
表中,然后才能插入约会记录。如果这些情况需要在单个操作中发生(例如,所有操作都成功或全部失败),那么将insert语句包装到事务中。
我没有一个MySQL实例可以完全检查所需的代码,所以我不能发布它,但请遵循以下过程:
doctor
记录LAST_INSERT_ID()
生成的主键保存到局部变量中patient
记录Again...if --这是一个原子操作,然后将这些语句包装在一个事务中,其中包括您的情况所需的任何验证或错误检查。
关于LAST_INSERT_ID()
的更多信息- https://stackoverflow.com/a/17112962/571237
发布于 2015-05-25 12:13:33
https://stackoverflow.com/questions/30403351
复制相似问题