mysql 创建外键约束以及注意事项

本文详细介绍了如何在MySQL中创建外键约束,包括创建方式一和方式二,并列举了注意事项,如数据一致性要求和错误代码解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql 创建外键约束以及注意事项:


创建外键:

首先创建一张区域表
CREATE TABLE `area` (
  `id` int(11) NOT NULL DEFAULT '0' COMMENT 'id',
  `create_time` datetime DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  `delflag` int(11) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  `code` varchar(8) DEFAULT NULL,
  `parent_code` varchar(8) DEFAULT NULL,
  `parent_name` varchar(255) DEFAULT NULL COMMENT '父区域名',
  `parent_id` int(11) DEFAULT NULL COMMENT '父区域id',
  KEY `code` (`code`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
然后创建一张供应商表并创建外键
创建方式一:创建表时增加外键
CREATE TABLE `supplier` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `supplier_name` varchar(50) DEFAULT NULL COMMENT '供应商名称',
  `area_code` varchar(8) DEFAULT NULL COMMENT '所属区域',
  `supplier_address` varchar(255) DEFAULT NULL COMMENT '供应商地址',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `supplier_areacode` (`area_code`),
  CONSTRAINT `supplier_areacode` FOREIGN KEY (`area_code`) REFERENCES `area` (`code`)
) ENGINE=InnoDB AUTO_INCREMENT=62 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='供应商表';
创建方式二:已存在表增加外键
//ALTER TABLE 表名 ADD FOREIGN KEY [外键名字] (外键字段) REFERENCES 父表 (主键字段);
ALTER TABLE supplier ADD constraint supplier_areacode FOREIGN KEY supplier_areacode(area_code) REFERENCES area(code) ;
删除外键约束
//ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
ALTER TABLE supplier DROP FOREIGN KEY supplier_areacode;

注意事项:

1.新增外键的表和外键指向表的 表引擎(InnoDB)、字段类型 要相同
2.外键指定表的字段需要添加索引
3.在使用方式二的时候需要注意,外键表(supplier表)中的字段值,必须存在于外键指向的表(area表)中。

1和2出错会出现:1215 - Cannot add foreign key constraint 报错
3出错会出现:1452 - Cannot add or update a child row: a foreign key constraint fails… 报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值