Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除MySQL中的行,但将所有下一行的编号强制为我最后一个id的编号?_Mysql - Fatal编程技术网

如何删除MySQL中的行,但将所有下一行的编号强制为我最后一个id的编号?

如何删除MySQL中的行,但将所有下一行的编号强制为我最后一个id的编号?,mysql,Mysql,我有一张1000行的桌子 我需要删除从5到1000的行,所以前4行保持不变,4行之后的每一行都被删除 但是,如果我写下如下内容: DELETE FROM table_name WHERE id > 4 插入后的下一条记录的编号是1001,我不希望这样 如何删除行,但将所有下一行的编号强制为上一个id的编号 另外,我不能用ALTER TABLE删除所有表格 提前感谢。如果您的id-自动增量字段需要使用ALTER TABLE更改其值 Can you do this? ALTER TABL

我有一张1000行的桌子

我需要删除从5到1000的行,所以前4行保持不变,4行之后的每一行都被删除

但是,如果我写下如下内容:

DELETE FROM table_name WHERE id > 4
插入后的下一条记录的编号是1001,我不希望这样

如何删除行,但将所有下一行的编号强制为上一个id的编号

另外,我不能用ALTER TABLE删除所有表格


提前感谢。

如果您的id-自动增量字段需要使用ALTER TABLE更改其值

Can you do this?


ALTER TABLE theTableInQuestion AUTO_INCREMENT=5
但如果不可能,您可以尝试不删除行,而是将there值设置为NULL或0,然后只更新there值 不是插入而是更新。。。其中id=5

认为表格处于自动递增状态。如果无法更改表,则需要在每个查询中手动提供id,例如

 INSERT INTO table (id,value) VALUES ((SELECT MAX(id)+1 FROM table), value);

请参阅MySQL的注释vis-a-vis锁表

?你没有。自动增量从不。。。递减,除非调用ALTER TABLE。但是,您是否考虑过使用触发器删除

您可能需要对此进行调试

delimiter |

CREATE TRIGGER testref AFTER DELETE ON theTableInQuestion
  FOR EACH ROW BEGIN
    IF SELECT COUNT(*) FROM test1 < 5 THEN
       ALTER TABLE theTableInQuestion AUTO_INCREMENT=5
    END IF;
  END;
|

DBCC CHECKIDENT“table_name”,重新设定种子,新的重新设定种子_值==>与MS-SQL一起使用

鉴于
ALTER TABLE_name AUTO_INCREMENT=5==>与MySQL一起工作

您的id处于自动递增状态。。。插入下一条记录时使用的是什么?PHP?或者只是mysql查询编辑器?phpmyadmin mysql querySorry,但这不是一个线程安全的建议。如果他让两个人在错误的时间拉数据,轰!但是我认为并发访问异常将由MySQL自己处理,我们不需要显式地做任何事情来防止它。但是,如果你担心这个问题,那么你可以试着编辑答案来删除下勾。从表中选择MAXid+1通常被认为是禁忌。我有一个表用户drupal db,但这会在删除每个行的用户后创建触发器testref,如果SELECT COUNT FROM test1<5,那么ALTER table users AUTO_INCREMENT=5 END IF;完|给我错误1064-您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以了解在第行的“SELECT COUNT FROM test1 5 THEN ALTER TABLE users AUTO_INCREMENT=5”附近使用的正确语法3@marian你在哪里运行它?我在phpmyadminAnyway中运行它,Brian Patterson的解决方案非常有效。谢谢,这似乎有效;。对像我这样的初学者的完整声明:从uid>4的用户中删除;ALTER TABLE users AUTO_INCREMENT=5;