私はデータベースを広範囲に使用する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);
最初のステートメントは機能します。ただし、2番目のステートメントで次のエラーが発生します。
#1452-子行を追加または更新できません:外部キー制約が失敗します( `<データベース名>/セッション`、CONSTRAINT` fk_sessions_1`外部キー( `patient_id`)参照`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;
編集:不要な詳細を削除しました。さらに必要な場合は、この投稿の最初のバージョンをご覧ください。