親と子の2つのテーブルがあります。子列の 1 つは、FOREIGN KEY 制約を持つ親の PRIMARY KEY を参照しています - child.parent_id は、parent.parent_id を参照しています。
子テーブルの外部キー列は NULL 値を許可します。これは、子が作成されるときに親がまだ不明な場合があるためです。しかし、親に関する情報が割り当て/更新されると、参照整合性が必要になります。
そして今、質問:
HTMLフォームからMySQLにnull値を渡す方法は? 引用符 '' または "" が機能しない 「外部キー制約が失敗します」 おそらく null 値の代わりに空の文字列を渡すためです。それとも、PHP で追加のチェックを行い、それを null に変換する必要がありますか?
CREATE TABLE IF NOT EXISTS `parent` (
`parent_id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`surname` varchar(20) NOT NULL,
PRIMARY KEY (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `child` (
`child_id` int(11) NOT NULL AUTO_INCREMENT,
`child_name` varchar(20) NOT NULL,
`parent_id` int(11) DEFAULT NULL,
PRIMARY KEY (`child_id`),
KEY `fk_parent_id` (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
ALTER TABLE `child`
ADD CONSTRAINT `fk_parent_id` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`parent_id`);