如何删除MySQL中的行,但将所有下一行的编号强制为我最后一个id的编号?
我有一张1000行的桌子 我需要删除从5到1000的行,所以前4行保持不变,4行之后的每一行都被删除 但是,如果我写下如下内容:如何删除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
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;