首页 > 关于mysql primary key的解释

关于mysql primary key的解释

我看网上说primary key 就等于唯一+不为空,而且一个表里只能有一个primary key,但是我在数据库创建表的时候PRIMARY KEY (username,bm_URL),这样不就2个主键了?而且我insert数据的时候 username 有重复'admin',并没有报错啊,怎么解释第一句话呢


你那样写就是联合主键。就可以username重复,但是相同username下,bm_URL不同就可以


多个主键的叫联合主键,也可以称之为联合做主码,你可以想象成商品订单表,记录中用户id是可以重复的,而用户id和订单号一起一定是唯一的。


primary key的含义是一条记录的唯一标识,类似于身份证的ID。
主键可以是一个字段或者多个字段联合组成,如果是一个字段,则不同记录或称不同行的主键不允许重复;如果是多个字段联合组成,则是这些字段的组合不允许相同。
所以你的情况只要不是username,bm_URL不同时相同就不会冲突。


一个表里只能有一个主键,主键是自增且不为空的 表里可以有多个唯一,建议你用可视化的phpadmin或者Navicat


数据库里的索引(index或者key)并不是针对一列的,因此一个key可以由多列构成(如你这儿设置的username和bm_URL)。因此主键的唯一性指的是它所包含的所有列共同合起来不能重复,你单独username重复是没关系的~

【热门文章】
【热门文章】