我有一个带有自动增量主键的MySQL表.我删除了表中间的一些行.现在我在ID列中有这样的东西:12,13,14,19,20.我删除了15,16,17和18行.
我想重新分配/重置/重新排序主键,以便我有连续性,即使19 a 15,20 a 16,依此类推.
我该怎么做?
我在我的数据库表中测试了一些数据,看看是否有任何错误,现在我清理了所有测试数据,但我的id(自动增量)不再从1开始,可以(怎么做)我重置它?
我有一个MySQL表,主键字段打开AUTO_INCREMENT.在阅读了这里的其他帖子之后,我注意到有相同问题并且答案各不相同的人.有人建议不要使用此功能,其他人说它不能"修复".
我有:
table: course
fields: courseID, courseName
Run Code Online (Sandbox Code Playgroud)
示例:表中的记录数:18.如果我删除记录16,17和18 - 我希望输入的下一条记录的课程ID为16,但是它将是19,因为最后输入的课程ID是18.
我的SQL知识并不令人惊讶,但无论如何使用查询(或phpMyAdmin界面中的设置)刷新或更新此计数?
该表将与数据库中的其他表相关.
鉴于所有的建议,我决定忽略这个'问题'.我将简单地删除并添加记录,同时让自动增量完成它的工作.我想这个数字到底是什么并不重要,因为它只被用作唯一标识符,并且没有(如上所述)商业含义.
对于那些我可能与我的原帖混淆的人:我不想用这个字段来知道我有多少记录.我只是希望数据库看起来整洁,并且具有更多的一致性.
我知道这不起作用,以各种形式尝试并且一直都失败了.实现以下结果的最简单方法是什么?
ALTER TABLE XYZ AUTO_INCREMENT = (select max(ID) from ABC);
Run Code Online (Sandbox Code Playgroud)
这非常适合自动化项目.谢谢!
SELECT @max := (max(ID)+1) from ABC; -> This works!
select ID from ABC where ID = (@max-1); -> This works!
ALTER TABLE XYZ AUTO_INCREMENT = (@max+1); -> This fails :( Why?
Run Code Online (Sandbox Code Playgroud) 可以通过设置/重置AUTO_INCREMENT
MySQL表的值
ALTER TABLE some_table AUTO_INCREMENT = 1000
但是我需要设置AUTO_INCREMENT
其现有值(以修复MM复制),例如:
ALTER TABLE some_table SET AUTO_INCREMENT = AUTO_INCREMENT + 1
这是行不通的
实际上,我想对数据库中的所有表运行此查询.但实际上这并不是非常重要.
除了手动运行查询外,我找不到解决此问题的方法.请你提出一些建议或指出一些想法.
谢谢
这应该是一个非常容易的问题,但我找不到一个有效的解决方案.
我将日期从Oracle迁移到MYSQL,在此过程中,所有主键都设置为auto_increment.
但是,有很多已确定的关系(父PK与孩子相同).
因此,执行事务的正确方法是插入父表,result.insertId
从此交互中获取,然后在子表中插入相同的值.我知道我可以简单地忽略在insert命令中发送id的auto_increment,但我不想让它继续下去.
正如我读到的解决方案说我需要将列更改为完全相同的规范但auto_increment,我运行以下SQL:
alter table added_object modify column id_interaction_object int(11) not null;
Run Code Online (Sandbox Code Playgroud)
..我收到以下消息:
ERROR 1833(HY000):无法更改列'id_interaction_object':用于表'metric'的外键约束'FK__METRIC__ADDED_OBJECT'
有小费吗?
谢谢
ALTER TABLE tablename AUTO_INCREMENT = 10000000
Run Code Online (Sandbox Code Playgroud)
此查询需要很长时间才能更新.为什么?我需要优化此查询.
当我尝试执行时,我对不断出现的语法错误感到困惑:
DBCC CHECKIDENT('database', RESEED, 1)
Run Code Online (Sandbox Code Playgroud)
在PHPMyAdmin中...
错误:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DBCC CHECKIDENT('database', RESEED, 1)' at line 1
Run Code Online (Sandbox Code Playgroud)
结果看起来像这样
我公司有不同类型的发票。例子:
H00001/2013。. . H99999/2013
和
T00001/2013 . . . T99999/2013
问题是,新年的编号正在增加。如何为每个新年重置自动增量值?
这是我当前的代码:
CREATE TABLE `invoices` (
`invoicenumber` mediumint unsigned NOT NULL auto_increment,
`invoicetype` enum('A','B') NOT NULL,
`date` date NOT NULL,
`client` varchar(100) NOT NULL,
PRIMARY KEY (invoicetype,invoicenumber)
) COMMENT='' ENGINE='MyISAM';
Run Code Online (Sandbox Code Playgroud) 我有一个设置(Django 1.11)有几个应用程序,包括 OOK、EEK 和其他不相关的应用程序。我想删除 OOK 的所有数据,同时保持 EEK(和其余数据)不变。理想情况下,我希望所有的主键也被重置,这样第一个新的 OOK 模型就会得到 1,依此类推……
这可能吗?
我能找到的只是reset
和sqlclear
都已弃用。flush
从数据库中删除了所有数据,因此不是我想要的
我承认这是一件奇怪的事情,但这是给我的手……
我有一个auto_incrementing的问题案例,这是我的表我首先它是如此顺利增加id*
id* name
1 name1
2 name2
3 name3
4 name4
5 name5
6 name6
Run Code Online (Sandbox Code Playgroud)
但是当我删除一条记录并插入一条新记录时,id从7开始.
id* name
1 name1
2 name2
3 name3
5 name5
6 name6
7 name7
Run Code Online (Sandbox Code Playgroud)
这就是我想要做的:
id* name
1 name1
2 name2
3 name3
4 name7
5 name5
6 name6
Run Code Online (Sandbox Code Playgroud)
我想要一个解决方案,其中填写每个数字,所以如果我删除一行,下一个autoinc号码将是我删除的数字而不是更高的下一个数字.
mysql ×11
sql ×4
database ×1
django ×1
optimization ×1
php ×1
phpmyadmin ×1
primary-key ×1
replication ×1
reset ×1
syntax ×1
xampp ×1