这可能是一个微不足道的问题,但在外键约束方面我仍然有点笨拙,所以我想确定一下。
假设我有一张桌子countries
与田野country_id
(PK)和name
,和一张桌子cities
与田野city_id
(PK), name
and country_id
(FK).
外键cities.country_id
有约束条件ON DELETE SET NULL
。据我了解,这意味着如果来自countries
被删除,其中的任何记录cities
删除记录的引用country_id
都会有它的country_id
字段设置为 NULL。
然而,如果cities.country_id
有属性NOT NULL
?这会阻止外键约束正常工作吗?确实如此,但我只是想检查一下。
如果你设置ON DELETE SET NULL
到你的外键,那么它就不允许你将该字段设置为NOT NULL
.
因此,您将无法创建或更改列为的表NOT NULL
and ON DELETE SET NULL
on 国家/地区 ID
当我运行以下语句时:
CREATE TABLE `country` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ;
CREATE TABLE `city` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`countryId` int(10) unsigned DEFAULT NOT NULL,
PRIMARY KEY (`id`),
KEY `FK_country` (`countryId`),
CONSTRAINT `FK_country` FOREIGN KEY (`countryId`) REFERENCES `country` (`id`) ON DELETE SET NULL ON UPDATE SET NULL
);
我得到了错误MySQL 5.5
is:
Schema Creation Failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOT NULL,
PRIMARY KEY (`id`),
KEY `FK_country` (`countryId`),
CONSTRAINT `' at line 4:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)