table中有多个外键时如何插入数据
How to insert data when there are multiple foreign keys in table
如何在多个外键时插入数据table
指包含患者、医生和工作人员的数据库
患者:预约必须有患者
医生:每次预约必有医生
我的问题是如何在约会和另一个相关 table 中同时插入数据,例如患者、医生?
请举个例子好吗?
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 : 阿里
资格: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
姓名:艾哈迈德·祖拜尔
性别男
诊断:测试
出生日期:20/6/2000
地址 : 伊斯兰堡
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)
);
如第一条评论所述,您需要先将记录插入patient
和doctor
表中,然后才能插入您的预约记录。如果这些需要在单个操作中发生(例如,全部成功或全部失败),则将插入语句包装在事务中。
我没有可用的 MySQL 实例来完全验证所需的代码,所以我不能 post 它,但请遵循以下过程:
- 插入您的
doctor
记录
- 将使用
LAST_INSERT_ID()
生成的主键保存到局部变量
- 插入您的
patient
记录
- 使用与步骤 2 相同的过程将此主键保存到新变量中
- 现在您可以在语句中使用这两个变量插入您的约会记录,以确保您满足外键
再次...如果这是一个原子操作,则将这些语句包装在一个事务中,其中包括您的情况所需的任何验证或错误检查。
有关 LAST_INSERT_ID()
的更多信息,请点击此处 -
为了实现这个你应该使用事务,关于这个的更多细节你可以阅读
谢谢
如何在多个外键时插入数据table 指包含患者、医生和工作人员的数据库 患者:预约必须有患者 医生:每次预约必有医生
我的问题是如何在约会和另一个相关 table 中同时插入数据,例如患者、医生?
请举个例子好吗?
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 : 阿里 资格: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 姓名:艾哈迈德·祖拜尔 性别男 诊断:测试 出生日期:20/6/2000 地址 : 伊斯兰堡
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)
);
如第一条评论所述,您需要先将记录插入patient
和doctor
表中,然后才能插入您的预约记录。如果这些需要在单个操作中发生(例如,全部成功或全部失败),则将插入语句包装在事务中。
我没有可用的 MySQL 实例来完全验证所需的代码,所以我不能 post 它,但请遵循以下过程:
- 插入您的
doctor
记录 - 将使用
LAST_INSERT_ID()
生成的主键保存到局部变量 - 插入您的
patient
记录 - 使用与步骤 2 相同的过程将此主键保存到新变量中
- 现在您可以在语句中使用这两个变量插入您的约会记录,以确保您满足外键
再次...如果这是一个原子操作,则将这些语句包装在一个事务中,其中包括您的情况所需的任何验证或错误检查。
有关 LAST_INSERT_ID()
的更多信息,请点击此处 -
为了实现这个你应该使用事务,关于这个的更多细节你可以阅读
谢谢