mysql主键自增怎么处理

author author     2023-04-25     283

关键词:

方法一: 如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数
truncate table 表名

方法二: dbcc checkident (’table_name’, reseed, new_reseed_value) 当前值设置为 new_reseed_value。如果自创建表后没有将行插入该表,则在执行 DBCC CHECKIDENT 后插入的第一行将使用 new_reseed_value 作为标识。否则,下一个插入的行将使用 new_reseed_value + 1。如果 new_reseed_value 的值小于标识列中的最大值,以后引用该表时将产生 2627 号错误信息。
方法二不会清空已有数据,操作比较灵活,不仅可以将自增值归零,也适用于删除大量连续行后,重新设置自增值并插入新的数据;或从新的值开始,当然不能和已有的冲突。

$sql="delete from $table_vote";
mysql_query($sql, $link);
$sql="alter table $table_vote auto_increment=1";
mysql_query($sql, $link);
参考技术A 完全不懂。 参考技术B 列的自增属性,一般用来设置整数列根据一定步长逐步增长的值,类似于其他数据库的序列。不过这里的“序列”是基于特定一张表的。关于自增属性的相关特性如下:
1. 控制自增属性性能的变量:innodb_autoinc_lock_mode
innodb_autoinc_lock_mode=0
代表传统模式,也就是说,在对有自增属性的字段插入记录时,会持续持有一个表级别的自增锁,直到语句执行结束为止。比如说下面两条语句,SQL 1 在执行期间,一直持有对表 f1 的表级自增锁,接下来 SQL 2 执行时锁超时。
innodb_autoinc_lock_mode=1
代表连续模式,和传统模式差不多,不同的点在于对于简单的插入语句,比如 SQL 2,只在分配新的 ID 过程中持有一个轻量级的互斥锁(线程级别,而不是事务级别),而不是直到语句结束才释放的表锁。
代表交错模式。这个模式下放弃了自增表锁,产生的值会不连续。不过这是性能最高的模式,多条插入语句可以并发执行。MySQL 8.0 默认就是交错模式。
那针对复制安全来说,以上三种模式,0 和 1 对语句级别安全,也就是产生的二进制日志复制到任何其他机器都数据都一致;2 对于语句级别不安全;三种模式对二进制日志格式为行的都安全。
2. 控制自增属性的步长以及偏移量
一般用在主主复制架构或者多源复制架构里,主动规避主键冲突。
auto_increment_increment 控制步长
auto_increment_offset 控制偏移量
3. 对于要立刻获取插入值的需求
就是说要获取一张表任何时候的最大值,应该时刻执行以下 SQL 3 ,而不是 SQL 2。SQL 2 里的函数 last_insert_id() 只获取上一条语句最开始的 ID,只适合简单的 INSERT。
4. 自增列溢出现象
自增属性的列如果到了此列数据类型的最大值,会发生值溢出。比如变更表 f1 的自增属性列为 tinyint。
SQL 2 显式插入最大值 127, SQL 3 就报错了。所以这点上建议提前规划好自增列的字段类型,提前了解上限值。
5. 自增列也可以显式插入有符号的值
那针对这样的,建议在请求到达数据库前规避掉。
参考技术C 问题描述清楚,需要自增还是不需要

mysql主键自增

比如创建表格,表格ID需要自增 将ID设置成主键,并配置auto_increment 例:createtabletest(id int(4) notnull primarykey auto_incrementusernamechar(20) passwdchar(20)) 查看详情

mysql手动插入数据时怎么让主键自增!

如:insertintotable_name(id(主键),user_name,sex...)values('','小明','1'.....),主键的值怎么做才能自增??参考技术A主键一般要设置成自增。所谓自增,就是在插入的时候,该字段不需要赋值,会自动+1;如果我的表有id... 查看详情

jpa中mysql数据库的主键自增怎么配置,pojo类该怎么写

...术A很简单,不用你写代码,也不用你在Mysql去配置自增的主键。你新建一个测试工程,导入Hibernate,再配置Hibernate的数据库连接,找到你那个表,右击鼠标映射反转,在添加主键那里选择需要生成主键的字段,及生成主键的方式... 查看详情

mysql——非主键自增(代码片段)

...:要创建一张表,其中我想将ip和date这两列作为一个复合主键,可以通过如下语句修改表结构:altertabletb_nameaddprimarykey(字段1,字段2,字段3);但是这样做会报错,原因是我在最开始创建表的时候已经将id作为主键了,因此要先取消id... 查看详情

解决:mysql表设置bigint主键自增,而使用mybatisplus插入数据主键出现随机值

记录BUG:在创建表时没有设置好主键自增,使用MybatisPlusX逆向生成工程代码;后面将表设置主键自增后,向表中插入数据,发现MybatisPlus给主键生成了一个随机值,多次插入也并没有自增。原因:在修... 查看详情

解决:mysql表设置bigint主键自增,而使用mybatisplus插入数据主键出现随机值

记录BUG:在创建表时没有设置好主键自增,使用MybatisPlusX逆向生成工程代码;后面将表设置主键自增后,向表中插入数据,发现MybatisPlus给主键生成了一个随机值,多次插入也并没有自增。原因:在修... 查看详情

解决:mysql表设置bigint主键自增,而使用mybatisplus插入数据主键出现随机值

记录BUG:在创建表时没有设置好主键自增,使用MybatisPlusX逆向生成工程代码;后面将表设置主键自增后,向表中插入数据,发现MybatisPlus给主键生成了一个随机值,多次插入也并没有自增。原因:在修... 查看详情

mycat主键自增问题(代码片段)

MyCAT自增字段和返回生成的主键ID的经验分享说明:1、mysql本身对非自增长主键,使用last_insert_id()是不会返回结果的,只会返回0.2、mysql只会对定义自增长主键,可以用last_insert_id()返回主键值。mycat目前提供了自增长主键功能,... 查看详情

mybatis怎么设置主键自增

设置主键自增,应该是设置具体的数据库,与mybatis没有什么关系吧。以mysql为例,假设主键为id1.可以在创建表的时候设置主键createtabletb(idbigint(20)primarykeyauto_increment);2.也可以在修改表结构的时候设置主键altertabletbmodifyidbigint(20)pr... 查看详情

mysql设置id主键自增,从0开始,请问怎么设?

DROPTABLEIFEXISTSmessages;CREATETABLEmessages(chatIdintunsignedNOTNULLauto_increment,toUserNamevarchar(50)DEFAULTNULL,PRIMARYKEY(`chatId`))ENGINE=MyISAMAUTO_INCREMENT=0DEFAULTCHARSET=utf8;这样是不ok的.INSERTINTOmessages(chatId,toUserName)VALUES(0,'saf');INSERTINTOmessages(chatId,toUserN... 查看详情

建立主键自增表(代码片段)

MySQL在建表的时候声明字段即可idintauto_incrementprimarykeynotnullOracle第一步:建立表droptablet_role;createtablet_role(role_namevarchar(255)NOTNULL,notevarchar(255)NOTNULL,idnumberNOTNULL,PRIMARYKEY(id));这里需要注意主键id得是num 查看详情

hibernate映射主键自增列

数据库是mysql只在mysql里面设置了主键。担没自增。。我想设置自增怎么设置参考技术A<hibernate-mapping><classtable="表"name="包.类"><idname="id"><!--关键这一句:generatorclass="native"--><generat... 查看详情

java程序连接oracle数据库时怎么设置主键自增

Java程序连接Oracle数据库时怎么设置主键自增在oracle中主键是不能自增的,不过可以创建一个序列--CreatesequencecreatesequenceSEQ_TEXTminvalue1maxvalue9999startwith60incrementby1cache20;在插入数据的时候INSERTINTOSTUDENT(ID,NAME)VALUES(SEQ_TEXT.NEXTVAL,\'张三\... 查看详情

开发人员改主键自增列起始值多了个0!!!

2017-07-23晚21:21接到开发打来的电话说mysql自增列改大后还能修改吗?原由:因领导说要保留id99999和98888这样的id号自己用,然后开发就自己改了user_login_account表自增列起始值,开发本想改成100002,然而他多加了一个0,搞成了1000002... 查看详情

数据库powerdesigner设置主键自增

...生在使用PowerDesigner设计数据库时如果没有在模型中设置主键自增在navicat中对于有外键约束的字段尝试设置主键自增会失败✨解决方案在生成SQL之前在PowerDesigner中设置主键自增选择物理模型!概念模型和逻辑模型不可以设置必须... 查看详情

如何设置主键自增从1000开始每次自增1

...ntidentity(1,1),primarykey(id),namevarchar(10))其中identity(1,1)为设置主键自增的部分,前边一个1表示从1开始计数,后边一个1表示每次增加的数量。primarykey(id)代表id列为主键。连续执行如下语句:insertintotest(name)values('a')insertintotest(na... 查看详情

怎么设置主键自增

...,1),primary key(id),name varchar(10))其中identity(1,1)为设置主键自增的部分,前边一个1表示从1开始计数,后边一个1表示每次增加的数量。primarykey(id)代表id列为主键。连续执行如下语句:insert into test(name) values ('... 查看详情

mysql的设置主键自增的问题

我用的是navicat这个东东用它可以把主键设成自增吗如何设置啊参考技术A数据库修改mysql的字符集:在安装mysql5.0时可以设置好mysql的字符集,一般使用utf8的字符集1查看建立表“tablename”的sql语句Showcreatetabletablename;//查看建立表... 查看详情