alter table questionlib modify id int(11) auto_increment;
注意事项:
修改后从下一条记录开始自动增长。如果想让原来的自动增长就得复制现有表的结构(无id),添加id并加上AUTO_INCREMENT,然后通过循环,添加n条空记录,然后对应先前表的id,依次插入数据。
扩展资料:
mysql自动增长开始值设置总结
1、创建表,设置表主键id自动增长,默认自动增长的起始值为1开始。
2、当表数据不为空的时候,重新去修改自动增长id开始值,mysql会主动去核对你设置的起始值是否是当前数据库已有id的最大值+1; 若是则修改成功,若不是则修改不成功 (默认还是id最大值+1)
3、要设置自动增长为1开始,需要清空表数据才行。alter table table_name AUTO_INCREMENT=1
4、若每次直接在数据库里面插入数据,则会自动的去修改当前表的自动增长起始值(设置自动增长起始值为当前插入成功的数据的id)
成功的执行例子如下,仅供参考
mysql> CREATE TABLE test_create_tab2 (
-> id INT AUTO_INCREMENT,
-> val VARCHAR(10),
-> PRIMARY KEY (id)
-> );
Query OK, 0 rows affected (009 sec)
mysql> INSERT INTO test_create_tab2(val) VALUES ('NO id');
Query OK, 1 row affected (003 sec)
mysql> select last_insert_id() as id;
+----+
| id |
+----+
| 1 |
+----+
1 row in set (000 sec)
mysql> INSERT INTO test_create_tab2(val) VALUES ('NO id 2');
Query OK, 1 row affected (003 sec)
mysql> select last_insert_id() as id;
+----+
| id |
+----+
| 2 |
+----+
1 row in set (000 sec)
mysql> select from test_create_tab2;
+----+---------+
| id | val |
+----+---------+
| 1 | NO id |
| 2 | NO id 2 |
+----+---------+
2 rows in set (000 sec)
像SQLserver这像的数据库是有自增字段的,实现原理SQLserver并没有公布的,但也比较容易猜到实现方式:
1新建一张表,记录不同表需要自增的字段,同时记录自增字段的最大值,以便下次分配值时,用最大值加1进行赋值。
2在成功分配一个自增字段值后,同时更新这个表中的对应记录的最大值,来保证下次分配时永远是最大值+1,也就达到了不重复。
注:用这种自定义实现的自增字段有好处,但也要慎重。
优点:如果项目需要迁移数据库平台的话(如从SQLServer迁移到Oracle),就不用考虑自增字段的问题了。
缺点:需要解决程序的并发问题,就是同时请求主键,会分配相同的情况。
这种情况使用xml来进行批量插入
1aspnet页面上抓取数据,转换成xml字符串
2将这个字符串作为参数传给存储过程
3存储过程里,将这个xml读取成临时表
4整个临时表插入到目标数据表中,这个过程可以使用sql
server的事务;其实在这里用不用事务问题都不大了,因为存储过程出错,数据插不进去的,还会抛出异常到aspnet后台,让后台进行处理异常
您用游标或aspnet代码来循环,速度会比较慢的
以上就是关于mySQL中如何修改列为自动增长急!!!全部的内容,包括:mySQL中如何修改列为自动增长急!!!、mysql数据库设置了一个id字段是自增的,但是插入数据时还是要手动插入id,不插入id就会出错。、数据库表的设计用 自增长int类型字段做主键,插入数据时怎么保证这条记录在表中是唯一的呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)