我正在开发一个广泛使用数据库的 PHP 应用程序。我设置数据库的同事设置表以使用外键。这是我正在使用的声明:
INSERT INTO patients (ethnicity, gender)
VALUES (1, 1);
INSERT INTO sessions (patient_id, submitted, age_in_years, video, annotated)
VALUES (LAST_INSERT_ID(), NOW(), 0, '', FALSE);
第一条语句有效。但是,第二个语句出现以下错误。
#1452 - 无法添加或更新子行:外键约束失败(`<database name>/sessions`, CONSTRAINT `fk_sessions_1` FOREIGN KEY (`patient_id`) REFERENCES `patient` (`id`) ON DELETE CASCADE ON更新级联)
我已经确认LAST_INSERT_ID()
返回预期值。
我怎样才能解决这个问题?
下面是我们如何设置sessions
表
CREATE TABLE IF NOT EXISTS `sessions` (
`id` int(11) NOT NULL auto_increment,
`patient_id` int(11) NOT NULL,
`severity` enum('Minimal Symptoms of Autism Spectrum Disorder','Mild-to-Moderate Symptoms of Autism Spectrum Disorder','Severe Symtoms of Autism Spectrum Disorder') default NULL,
`submitted` datetime default NULL,
`age_in_years` int(11) NOT NULL,
`video` text NOT NULL,
`annotated` tinyint(1) default '0',
PRIMARY KEY (`id`),
KEY `fk_sessions_1` (`patient_id`),
KEY `age_in_years` (`age_in_years`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
ALTER TABLE `sessions`
ADD CONSTRAINT `fk_sessions_1` FOREIGN KEY (`patient_id`) REFERENCES `patient` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
编辑:删除了不必要的细节。如果您觉得需要更多,请随时查看这篇文章的第一个版本。