Navicat 设置外键关联
Navicat 设置外键关联
举例:角色表 、 权限表。一个对应的是多个权限。
// 这是设计的关联代码
CREATE TABLE `weichat`.`Untitled` (
`roleperid` int(11) NOT NULL AUTO_INCREMENT COMMENT '角色权限表',
`rolepername` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色权限的名称',
`roleperdes` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '角色权限的描述',
`perids` int(11) NULL DEFAULT NULL COMMENT '权限的主键',
`roleids` int(11) NULL DEFAULT NULL COMMENT '角色的主键',
`roleperdate` datetime(0) NULL DEFAULT NULL COMMENT '角色权限的日期',
PRIMARY KEY (`roleperid`) USING BTREE,
INDEX `roleper_ibfk_1`(`roleids`) USING BTREE,
INDEX `roleper_ibfk_2`(`perids`) USING BTREE,
CONSTRAINT `roleper_ibfk_1` FOREIGN KEY (`roleids`) REFERENCES `weichat`.`sysrole` (`roleid`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `roleper_ibfk_2` FOREIGN KEY (`perids`) REFERENCES `weichat`.`sysper` (`perid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
- 通过使用 navicat 的设置是这样的。


- 在删除时和更新的时候有四个内容可供选择。

- 首先,记住 主键表(子表)、外键关联表(父表)的关系,方便以下内容的认识
- CASCADE:父表delete、update的时候,子表会delete、update掉关联记录;
- SET NULL:父表delete、update的时候,子表会将关联记录的外键字段所在列设为null,所以注意在设计子表时外键不能设为not null;
- RESTRICT:如果想要删除父表的记录时,而在子表中有关联该父表的记录,则不允许删除父表中的记录;
- NO ACTION:同 RESTRICT,也是首先先检查外键;