MySQL 添加外键时 的注意事项

MySQL 添加外键时 的注意事项

1.数据库引擎 : InnoDB
2.一表A字段做为二表的外键时。A字段的长度需要和二表的B字段长度一致。
3.A字段需要是一表的主键

MySQL语句

添加外键的SQL语句:
CONSTRAINT picture_number FOREIGN KEY (picture_number) REFERENCES game_table (game_number) ON DELETE CASCADE ON UPDATE CASCADE

创建 game_table 表 和 game_picture_table 表:

CREATE TABLE `game_table`  (
  `game_id` int(11) NOT NULL AUTO_INCREMENT,
  `game_number` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '游戏编号',
  `game_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `game_details` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '游戏详情',
  PRIMARY KEY (`game_id`, `game_number`) USING BTREE,
  INDEX `game_number`(`game_number`) USING BTREE,
  INDEX `game_id`(`game_id`) USING BTREE,
  INDEX `game_name`(`game_name`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;


CREATE TABLE `game_picture_table`  (
  `picture_id` int(11) NOT NULL AUTO_INCREMENT,
  `picture_location` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '地址',
  `picture_number` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
  PRIMARY KEY (`picture_id`) USING BTREE,
  INDEX `picture_number`(`picture_number`) USING BTREE,
  CONSTRAINT `picture_number` FOREIGN KEY (`picture_number`) REFERENCES `game_table` (`game_number`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;

结果如下:

在这里插入图片描述

在这里插入图片描述
添加外键时设置的四个属性的含义:

CASCADE
在父表上update/delete记录时,子表对应的记录同步更新 
 
SET NULL
在父表上update/delete记录时,将子表上对应的记录设为null  
 
NO ACTION
如果子表中匹配了父表的记录,则父表的记录不能进行update/delete操作  
 
RESTRICTno action, 都是先检查外键约束
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值