mysql中 auto_increment 怎样实现自增??

时间:2022-01-04 01:33:24
/*先建一个example6 表, 定义 ID实现自增*/

CREATE TABLE example6 (
    id INT PRIMARY KEY AUTO_INCREMENT ,
    stu_id INT NOT NULL,
    name VARCHAR(20) NOT NULL
)
/*插入一条数据*/
 insert into example6values (1,002,'黎明'); 
/*ok 可以实现*/
/*再插一条数据失败!!!!!*/
 insert into example6 values (2,002,'黎明'); 或者  insert into example6 values (,002,'黎明'); 
为什么?具体应该怎么弄才能实现自增,求指教!给出最简单的代码 mysql中 auto_increment 怎样实现自增??

15 个解决方案

#1


insert into example6(stu_id,name) values (002,'黎明');
这些问题在搜索引擎上都很容易找到的诶,为何要提问呢?

#2


自增值不用插入,它会自动增加!

#3


1楼+1
自增字段必须要用 insert into tb(xxx,xxx) values(xxx,xxx)这种格式,不能偷懒不写字段

#4



mysql的自增列稍微有点不同,虽然你定义了自增列,但是你也可以插入数据,

所以这个能插入;  insert into example6 values (1,002,'黎明'); 

这个应该也是可以插入的 insert into example6 values (2,002,'黎明');

而insert into example6 values (,002,'黎明');  第一列没有写值,所以就会报错,改为:

insert into example6 (id,stu_id,name) values (002,'黎明'); 


#5


引用 3 楼 zhu19774279 的回复:
1楼+1
自增字段必须要用 insert into tb(xxx,xxx) values(xxx,xxx)这种格式,不能偷懒不写字段

 试过了,不行啊

#6


引用 4 楼 yupeigu 的回复:
mysql的自增列稍微有点不同,虽然你定义了自增列,但是你也可以插入数据,

所以这个能插入;  insert into example6 values (1,002,'黎明'); 

这个应该也是可以插入的 insert into example6 values (2,002,'黎明');

而insert into example6 values (,002,'黎明');  第一列没有写值,所以就会报错,改为:

insert into example6 (id,stu_id,name) values (002,'黎明'); 
也不行啊!

#7


 insert into example6 values (null,002,'黎明')

#8


把错误信息贴出来啊!

#9


引用 6 楼 MeiZhiMaYiDuYou 的回复:
Quote: 引用 4 楼 yupeigu 的回复:


mysql的自增列稍微有点不同,虽然你定义了自增列,但是你也可以插入数据,

所以这个能插入;  insert into example6 values (1,002,'黎明'); 

这个应该也是可以插入的 insert into example6 values (2,002,'黎明');

而insert into example6 values (,002,'黎明');  第一列没有写值,所以就会报错,改为:

insert into example6 (id,stu_id,name) values (002,'黎明'); 
也不行啊!


自增字段的ID不要写出来啊.
insert into example6(stu_id, name) values (002,'黎明'); 

insert into  插入,  列出的表字段 跟 values 后的值是一一对应的.
如果有自增字段, 自增字段不用你去管他, 这时不能简写, 需要将除掉自增字段外的其他你需要插入的字段名都罗列出来
values 值也需要跟你列出的字段名对应

#10


自增字段不用管的,系统自己添加的

#11


贴出你的表结构看下

#12


SHOW TABLE STATUS LIKE '表名'; 看一下是不是auto_increment的值有问题

#13


上面的都不行,那你应该还有其他的索引,导致相同的不能插入

#14


可以的,楼主的错误信息是?

#15



范列sql:
CREATE TABLE example6 (
    id INT PRIMARY KEY AUTO_INCREMENT ,
    stu_id INT NOT NULL,
    name VARCHAR(20) NOT NULL
);
insert into example6 values (1,002,'黎明');
 insert into example6 values (2,003,'黎明2');
select * from example6;



执行过程如下所示:

mysql> CREATE TABLE example6 (
    ->     id INT PRIMARY KEY AUTO_INCREMENT ,
    ->     stu_id INT NOT NULL,
    ->     name VARCHAR(20) NOT NULL
    -> );
Query OK, 0 rows affected (0.03 sec)

mysql> 
mysql>  insert into example6 values (1,002,'黎明');
Query OK, 1 row affected (0.02 sec)

mysql> select * from example6;
+----+--------+--------+
| id | stu_id | name   |
+----+--------+--------+
|  1 |      2 | 黎明   |
+----+--------+--------+
1 row in set (0.00 sec)

mysql>  insert into example6 values (2,003,'黎明2');
Query OK, 1 row affected (0.01 sec)

mysql> select * from example6;
+----+--------+---------+
| id | stu_id | name    |
+----+--------+---------+
|  1 |      2 | 黎明    |
|  2 |      3 | 黎明2   |
+----+--------+---------+
2 rows in set (0.00 sec)

mysql> 

#1


insert into example6(stu_id,name) values (002,'黎明');
这些问题在搜索引擎上都很容易找到的诶,为何要提问呢?

#2


自增值不用插入,它会自动增加!

#3


1楼+1
自增字段必须要用 insert into tb(xxx,xxx) values(xxx,xxx)这种格式,不能偷懒不写字段

#4



mysql的自增列稍微有点不同,虽然你定义了自增列,但是你也可以插入数据,

所以这个能插入;  insert into example6 values (1,002,'黎明'); 

这个应该也是可以插入的 insert into example6 values (2,002,'黎明');

而insert into example6 values (,002,'黎明');  第一列没有写值,所以就会报错,改为:

insert into example6 (id,stu_id,name) values (002,'黎明'); 


#5


引用 3 楼 zhu19774279 的回复:
1楼+1
自增字段必须要用 insert into tb(xxx,xxx) values(xxx,xxx)这种格式,不能偷懒不写字段

 试过了,不行啊

#6


引用 4 楼 yupeigu 的回复:
mysql的自增列稍微有点不同,虽然你定义了自增列,但是你也可以插入数据,

所以这个能插入;  insert into example6 values (1,002,'黎明'); 

这个应该也是可以插入的 insert into example6 values (2,002,'黎明');

而insert into example6 values (,002,'黎明');  第一列没有写值,所以就会报错,改为:

insert into example6 (id,stu_id,name) values (002,'黎明'); 
也不行啊!

#7


 insert into example6 values (null,002,'黎明')

#8


把错误信息贴出来啊!

#9


引用 6 楼 MeiZhiMaYiDuYou 的回复:
Quote: 引用 4 楼 yupeigu 的回复:


mysql的自增列稍微有点不同,虽然你定义了自增列,但是你也可以插入数据,

所以这个能插入;  insert into example6 values (1,002,'黎明'); 

这个应该也是可以插入的 insert into example6 values (2,002,'黎明');

而insert into example6 values (,002,'黎明');  第一列没有写值,所以就会报错,改为:

insert into example6 (id,stu_id,name) values (002,'黎明'); 
也不行啊!


自增字段的ID不要写出来啊.
insert into example6(stu_id, name) values (002,'黎明'); 

insert into  插入,  列出的表字段 跟 values 后的值是一一对应的.
如果有自增字段, 自增字段不用你去管他, 这时不能简写, 需要将除掉自增字段外的其他你需要插入的字段名都罗列出来
values 值也需要跟你列出的字段名对应

#10


自增字段不用管的,系统自己添加的

#11


贴出你的表结构看下

#12


SHOW TABLE STATUS LIKE '表名'; 看一下是不是auto_increment的值有问题

#13


上面的都不行,那你应该还有其他的索引,导致相同的不能插入

#14


可以的,楼主的错误信息是?

#15



范列sql:
CREATE TABLE example6 (
    id INT PRIMARY KEY AUTO_INCREMENT ,
    stu_id INT NOT NULL,
    name VARCHAR(20) NOT NULL
);
insert into example6 values (1,002,'黎明');
 insert into example6 values (2,003,'黎明2');
select * from example6;



执行过程如下所示:

mysql> CREATE TABLE example6 (
    ->     id INT PRIMARY KEY AUTO_INCREMENT ,
    ->     stu_id INT NOT NULL,
    ->     name VARCHAR(20) NOT NULL
    -> );
Query OK, 0 rows affected (0.03 sec)

mysql> 
mysql>  insert into example6 values (1,002,'黎明');
Query OK, 1 row affected (0.02 sec)

mysql> select * from example6;
+----+--------+--------+
| id | stu_id | name   |
+----+--------+--------+
|  1 |      2 | 黎明   |
+----+--------+--------+
1 row in set (0.00 sec)

mysql>  insert into example6 values (2,003,'黎明2');
Query OK, 1 row affected (0.01 sec)

mysql> select * from example6;
+----+--------+---------+
| id | stu_id | name    |
+----+--------+---------+
|  1 |      2 | 黎明    |
|  2 |      3 | 黎明2   |
+----+--------+---------+
2 rows in set (0.00 sec)

mysql>