这样MYSQL创建一个自增长主键列的表的语句,为什么会报错呢?

安迪 2011-01-08 08:00:47
CREATE TABLE `test` (
`name` char(6) CHARACTER SET latin1 NOT NULL DEFAULT '',
`cd` int(3) unsigned zerofill NOT NULL AUTO_INCREMENT,

PRIMARY KEY (`name`,`cd`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
...全文
334 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
安迪 2011-01-08
  • 打赏
  • 举报
回复
你这个好像还是只做了一个的索引。只不过换成第二个来做索引了。不过我试验过了应该是可以的。谢谢了。结贴!
iihero 2011-01-08
  • 打赏
  • 举报
回复
可以,这样就行了:
mysql> CREATE TABLE `test3` (
-> `name` char(6) CHARACTER SET latin1 NOT NULL DEFAULT '',
-> `cd` int(3) unsigned zerofill NOT NULL AUTO_INCREMENT,
->
-> PRIMARY KEY (`cd`),
-> key(`name`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Query OK, 0 rows affected (0.08 sec)

mysql>
安迪 2011-01-08
  • 打赏
  • 举报
回复
十分感谢。那我可以帮两个主键都作为索引吗?
iihero 2011-01-08
  • 打赏
  • 举报
回复
自增长列必须是key,就是说必须创建索引

mysql> CREATE TABLE `test2` (
-> `name` char(6) CHARACTER SET latin1 NOT NULL DEFAULT '',
-> `cd` int(3) unsigned zerofill NOT NULL AUTO_INCREMENT,
->
-> PRIMARY KEY (`name`,`cd`),
-> key(`cd`)
-> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Query OK, 0 rows affected (0.06 sec)

加一个key(`cd`)就行了。
虽然,你这里的主键`cd`就够了。
呵呵。

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧