mysql中主键包含多字段问题

这篇文章主要记录自己学习mysql过程中遇到的关于主键包含多字段,而且后一字段是自动增长类型的。

例如:表album

------------------------------------------------------

aritist_id   |    album_id  |  album_name

-----------------------------------------------------

1                |           1           |  boss drum

1                |           2           |   entract           

1                |           3           |    bingo

....

3                |          1            |        electric

3                |           2           |        sonic temple

3                |           3           |     adidas

 

字段artist_id 和album_i构成主键,而且album_id是自动增长类型,会根据artist_id不同而从1自动增长

代码:

create table album(

artist_id int(5) not null,

album_id int(4) not null auto_increment,

album_name char(128) default null,

primary key (artist_id, album_id)

) engine=myisam auto_increment=5 default charset = latin1;

这里的关键是最后设置engine=myisam这里,很多mysql默认的engine是innoDB,故这里要对engine进行重新设置,否则,是不能达到上述目的。

create table album(

artist_id int(5) not null,

album_id int(4) not null auto_increment,

album_name char(128) default null,

primary key (artist_id, album_id)

);这段代码是会报错的,提示自动增长的列必须是一个key,即你必须写成primary key (album_id, artist_id),这样album_id就不会根据artist_id来变化,它会一直增加,例如:

------------------------------------------------------

aritist_id   |    album_id  |  album_name

-----------------------------------------------------

1                |           1           |  boss drum

1                |           2           |   entract           

1                |           3           |    bingo

........

3                |          6            |        electric

3                |           7           |        sonic temple

3                |           8           |     adidas

 ..............



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值