`

mysql非主键自增长

阅读更多

在网上查过一些资料,很多人说,mysql中,只有主键才能设置为自增长列。

经过一些深入的了解,其实并非只有主键才能设自增长,而是设为“键(key)”的列就可以设置自增长。

 

下面通过几个例子来具体说明一下:

首先是最普通的创建方式:

 

执行上面的创建语句,会报错,提示there can be only one auto column and it must be defined as a key

 

差不多就是说,普通列是没办法创建自增长的。

 

再来看看下面的语句:

 

 

 

语句执行成功了。但是有细心的人会发现,其实ID字段,并不是主键,为了消除疑虑,再来试试将ID设为主键的情况:

 

 

结果表名,ID被设为主键了,但是column1还是可以设置为自增长的。现在插入几条数据来测试一下自增长的效果。

 

 

可以看到,column的确被设置为了自增长序列。中间一次插入,由于主键重复了,没有插入成功,但是自增长序列,还是用了一次增长。所以第三次插入成功的时候,column1的值是3.

 

继续执行几条语句来验证一下:

 

 

自增长运作的很成功。

 

接下来我们再来思考一下最开始报错的那句话“there can be only one auto column and it must be defined as a key”

 

后半句“and it muse be defined as a key”我们已经在上面的测试中解决了

 

这里需要关注的是前半句“there can be only one auto column” ,意思应该是说,只能设置一列为自增长,为了验证是不是这样,再来执行几条语句来试试:

 

 

 

经过上面几条语句的执行结果不难发现,一张表确实只能设置一个自增长序列。

 

写到这里,mysql数据库的自增长序列的简单研究初步完成了

 

得出的结论为:每张表只能设置一个字段为自增长字段,这个字段可以是主键,也可以不是主键,如果不是主键,则必须设置为一种“键(key)”,

 

其实,主键(primary key)也是键(key)的一种,key还包括外键(foreign key)、唯一键(unique key)等,关于key的讨论可以查看帖子http://zccst.iteye.com/blog/1697043

分享到:
评论

相关推荐

    mysql非主键自增长用法实例分析

    本文实例讲述了mysql非主键自增长用法。分享给大家供大家参考,具体如下: mysql并非只有主键才能自增长,而是设为键的列就可以设置自增长。 如下: CREATE TABLE t1 ( id INT, col1 INT auto_increment NOT NULL...

    mysql实现char类型主键自增长

    mysql用触发器实现char类型主键自增长

    mysql取得自动增长的主键值

    mysql取得自动增长的主键值,mysql组织推荐的一种安全的方法!

    主键自增长(AUTO-INCREMENT)

    主键自增长(AUTO_INCREMENT)

    mysql的插入问题 怎么获得自动增长的ID

    一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15 还是MYSQL的,一张表有还是有ID自增主键,用JDBC insert一条语句之内,怎么在JAVA...

    HeidiSQL(Mysql 管理 图形)

    HeidiSQL 是一款用于简单化你的 MySQL 服务器和数据库管理的图形化界面。该软件允许你浏览你的数据库,管理表,浏览和编辑记录,管理用户权限等等。此外,你可以从文本文件导入数据,运行 SQL查询,在两个数据库之间...

    mysql把主键定义为自动增长标识符类型

    1、把主键定义为自动增长标识符类型 在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如: create table customers(id int auto_increment primary key notnull, name varchar(15))...

    深入Mysql,SqlServer,Oracle主键自动增长的设置详解

    本篇文章是对Mysql,SqlServer,Oracle主键自动增长的设置进行了详细的分析介绍,需要的朋友参考下

    mysql修改自增长主键int类型为char类型示例

    主要介绍了mysql修改自增长主键int类型为char类型示例,需要的朋友可以参考下

    Oracle与Mysql自动增长列(id)的区别

    Oracle与Mysql不同,不能在CREATE建立表时设置自动增长列功能。 Oracle必须通过创建sequence序列来实现自动增加列的功能。 首先要建立序列(当然必须要先建好表,添加好主键约束,这列假设约束名为test_sequence)  ...

    MySQL中的主键以及设置其自增的用法教程

    1、声明主键的方法: 您可以在创建表的时候就为表加上主键,如: CREATE TABLE tbl_name ([字段描述省略…], PRIMARY KEY(index_col_name)); 也可以更新表结构时为表加上主键,如: ALTER TABLE tbl_name ADD ...

    对有自增长字段的表导入数据注意事项

    您可能感兴趣的文章:SQL Server设置主键自增长列(使用sql语句实现)oracle中的ID号实现自增长的方法mysql修改自增长主键int类型为char类型示例自增长键列统计信息的处理方法实现oracle数据库字段自增长(两种方式)

    Mysql数据库操作

    数据库操作文件,包含mysql建表,主键自动增长, 添加数据!

    深入分析mysql为什么不推荐使用uuid或者雪花id作为主键

    1.1:要说明这个问题,我们首先来建立三张表,分别是user_auto_key,user_uuid,user_random_key,分别表示自动增长的主键,uuid作为主键,随机key作为主键,其它我们完全保持不变.根据控制变量法,我们只把每个表的主键使用...

    使用Highcharts结合PHP与Mysql生成饼状图

    为了更好的讲解,实例中在Mysql数据库中建立一张表chart_pie,用于表示各搜索引擎带来的访问量,表中分别有id、title和pv三个字段,id是自增长整型、主键;title表示搜素引擎的名称,pv表示对应的访问量。chart_pie...

    MySQL 序列 AUTO_INCREMENT详解及实例代码

    MySQL序列是一组整数:1, 2, 3, …,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现。 本章我们将介绍如何使用MySQL的序列。 使用AUTO_INCREMENT MySQL中...

Global site tag (gtag.js) - Google Analytics