mysql外键1005错误,以及主键外键概念

今天学习mysql,做几个表居然做了一个多小时。

设置外键的时候遇到1005错误。

1005 - Can’t create table ‘oschina.#sql-97c_2’ (errno: 150)
然后查了很久才发现两个字段的大小不匹配。名字都叫做sid,一个是UNSIGNED INT(10),另一个是INT(11)。两个字段的类型或者大小必须严格匹配。mysql的错误提示太鸡肋了吧。

梳理一下主键和外键的概念

主键是能确定一条记录的唯一标识,比如身份证号啊,社保号啊,学号啊。就是不能有重复的意思。并且主键除了标记一条记录不要有其他用途。
主键在物理层面上只有两个用途:
1. 惟一地标识一行。
2. 作为一个可以被外键有效引用的对象

外键就是联系另一张表的键,可以保证数据的唯一性。有了外键,当做一些涉及外键字段的增,删,更新操作之后,需要触发相关操作去检查,而不得不消耗资源。外键还会因为需要请求对其他表内部加锁而容易出现死锁情况。一般互联网应用都不推荐使用外键。

猜你喜欢

转载自blog.csdn.net/zmysn_a/article/details/78647051