私は2つのエントリを含むテーブルを持っています。mysqlの外部キー制約付きの挿入に関する提案
CREATE TABLE `db`.`main` (
`id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
);
ような何か
これらの2つのエントリのIDが自動的にプライマリキーが生成されます。
私は
CREATE TABLE `db`.`day` (
`main_id` int(10) unsigned NOT NULL,
`day` tinyint(4) NOT NULL,
CONSTRAINT `fk_db_main` FOREIGN KEY (`main_id`) REFERENCES `main` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
);
を結ぶルールに別のテーブルを持っている今、私は正常に
SELECT * FROM main where id='9';
を使用して結果を得ることができますが、私は
INSERT INTO day (main_id, day) VALUES (9, 0);
を実行しようとすると、私は
を取得します"子行を追加または更新できません:外部キー制約は失敗します(db
。 day
、CONSTRAINT fk_db_main
FOREIGN KEY(main_id
は)main
(id
)ON UPDATE ON NO ACTIONのNO ACTIONを削除しない)私は、インサートで行方不明です何で(1452年)、」
任意の提案ですか?
** I HADNを参照します実際の原因は、主なdbテーブルがMyISAMにあり、InnoDBテーブルがそれに接続する外部キーを作成できないということでした。つまり、MyISAMはサポートしていません
insertステートメントが正常に表示されます。 –
私はあなたが「メイン」テーブルに2つの「エントリー」があると思うことに困惑しています。私の考え方には、IDという1つの列があり、それも表の主キーです。 –
また、なぜあなたはSELECTで '9'を引用していますか? SELECTを実行すると、どのような結果が得られますか? –