pk でユーザー テーブルを参照する、deletedBy という外部キー列を持つ mail というテーブルがあります。新しいメールを作成するときに、メールが削除されていないため、このフィールドを null に設定したいのですが、そうすると外部キー制約エラー エラーが発生します。
エラーの内容は理解できましたが、どうすれば回避できますか?
テーブル:-
CREATE TABLE `mail` (
`pk` int(10) unsigned NOT NULL AUTO_INCREMENT,
`from` int(11) unsigned NOT NULL,
`to` int(11) unsigned NOT NULL,
`subject` varchar(255) NOT NULL,
`message` text NOT NULL,
`dt` datetime NOT NULL,
`read` enum('0','1') NOT NULL DEFAULT '0',
`deletedby` int(11) unsigned DEFAULT '0',
PRIMARY KEY (`pk`),
KEY `from_mail__users_pk` (`from`),
KEY `to_mail__users_pk` (`to`),
KEY `deletedby_mail__users_pk` (`deletedby`),
CONSTRAINT `deletedby_mail__users_pk` FOREIGN KEY (`deletedby`) REFERENCES `user` (`pk`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `from_mail__users_pk` FOREIGN KEY (`from`) REFERENCES `user` (`pk`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `to_mail__users_pk` FOREIGN KEY (`to`) REFERENCES `user` (`pk`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
エラーメッセージ:-
ERROR 1452: Cannot add or update a child row: a foreign key constraint fails (`ajfit`.`mail`, CONSTRAINT `deletedby_mail__users_pk` FOREIGN KEY (`deletedby`) REFERENCES `user` (`pk`) ON DELETE NO ACTION ON UPDATE NO ACTION)
SQL Statement:
INSERT INTO `ajfit`.`mail` (`from`, `to`, `subject`, `message`, `read`) VALUES (31, 30, 'test', 'test', '0')
ありがとう
アンドリュー