Mysql中的外键索引

  • 外键索引(foreign key)
  • 作用:让当前表的字段值在另一个表的范围内选择。

    注意规则:

  • 1.主表的被参考字段和从表的参考字段的数据类型应该相同

  • 2.主表中的参考字段必须是KEY的一种,通常是主键。
  mysql> create table tab1(
    -> id int,
    -> name char(20)
    -> );
Query OK, 0 rows affected (0.21 sec)

mysql> alter table tab1 add primary key(id);
Query OK, 0 rows affected (0.39 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> create table tab2(
    -> id1 int,
    -> name char(20),
    -> foreign key(id1) references 
    -> tab1(id)
    -> on delete cascade
    -> on update cascade     #cascade是一种级联动作的类型
    -> );

Query OK, 0 rows affected (0.39 sec)

外键索引失败的一般原因:
1.主表忘记给定主键
2.被参考字段与参考字段的数据类型不一致
3.主表与从表的存储引擎不一致

show create table table_name

使用此语句查看两表的存储引擎:

| tab1  | CREATE TABLE `tab1` (
  `id` int(11) NOT NULL,
  `name` char(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |   #关注ENGINE后面的,若不同 更改相同。

修改语句如下:

alter table tab1 engine=innodb;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值