Привет всем, у меня есть следующая таблица 'users' в MySQL:
CREATE TABLE `users` (
`uid` int(11) NOT NULL auto_increment,
`fname` varchar(50) NOT NULL,
`lname` varchar(50) NOT NULL,
`role` varchar(75) NOT NULL,
`region` tinyint(4) unsigned default NULL,
`username` varchar(25) NOT NULL,
`password` varchar(75) NOT NULL,
`new_pass` varchar(5) default NULL,
PRIMARY KEY (`uid`),
UNIQUE KEY `username` (`username`),
KEY `role` (`role`),
KEY `region` (`region`),
CONSTRAINT `users_ibfk_3` FOREIGN KEY (`role`) REFERENCES `role` (`role`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `users_ibfk_4` FOREIGN KEY (`region`) REFERENCES `region` (`region`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=utf8
У меня есть 'регион', заданный в качестве внешнего ключа для таблицы регионов - region.region '
Обратите внимание, что users.region объявлен как NULL. У меня сложилось впечатление, что в MySQL ограничение внешнего ключа применяется ТОЛЬКО, если ключ установлен как NOT NULL.
Однако, когда я пытаюсь вставить пользователя с NULL-регионом в мое PHP-приложение, я получаю следующую ошибку:
ERROR: Cannot add or update a child row: a foreign key constraint fails (`reslife4/users`, CONSTRAINT `users_ibfk_4` FOREIGN KEY (`region`) REFERENCES `region` (`region`) ON DELETE CASCADE ON UPDATE CASCADE)
НО, если бы я добавил этого пользователя вне моего PHP-приложения, например в phpMyAdmin, это позволило бы мне.
Кто-нибудь знает, что происходит?