我在MySql中创建了一个表,其中列“id”为auto_increment和Primary_key。我最初做了3行,即1,2,3。我删除了不。 2行但编号仍为1,3。我如何将其更改为1,2。
MySql Table自动更新MySql行编号
回答
简短的回答是:你不要。改变这是一个多步骤的问题,如果你做得不对,可能会非常容易出错。坦率地说,它很少(如果有的话)有意义。
事参与这样一个任务:
删除你不想要的行(你这样做)
减去1从每一个
id
这>=
到的id
你刚删除的行。将自动增量计数器更新为小于当前值1。
对于这是外键的所有表做同样的事情。
如果您想删除多行,逻辑会非常快速地变得复杂得多。无论哪种方式,它都需要相当多的资源,并会对你的外键造成严重破坏。
这样的行为确实违背了人们通常如何使用数据库的原则。 RDMS不像Excel电子表格那样是一个平面文件。只要删除这些行并让自动增加的ID存在差距,那么它确实对您的应用程序没有任何影响。
谢谢了。其实我确实需要ID列。你看,它是一个在线考试门户。管理员需要知道他即将删除的问题的序列号。 –
我找到了一种方法。这很粗糙,但它的工作原理。我删除整个列并在用户/管理员进入删除选项之前再次创建它。 –
Class.forName(“com.mysql.jdbc.Driver”); \t Connection conn = DriverManager.getConnection(“jdbc:mysql:// localhost:3306/OnlineExamination”,“root”,“root”); \t PreparedStatement ps = conn.prepareStatement(“alter table qna_c drop id”); \t int r = ps.executeUpdate(); \t ps = conn.prepareStatement(“alter table qna_c add column id int not null auto_increment primary first first”); \t r = ps.executeUpdate(); \t ps = conn.prepareStatement(“delete from qna_c where id =?”); \t ps.setInt(1,id); \t r = ps.executeUpdate(); –
- 1. MySQL更新行号
- 2. MySQL更新行号
- 3. 更新MySQL行时自动更改
- 4. 更新列行编号
- 5. MySQL插入之前插入更新列与新的自动增量编号
- 6. 自动更新版本号
- 7. MySQL更新后自动更新列
- 8. 自动更新的MySQL场
- 9. Mysql自动更新事件
- 10. 自动更新的MySQL列
- 11. 在MySQL中按行号更新;每行?
- 12. 如何在mysql中自动编号?
- 13. 在MySQL中生成自动编号
- 14. MySQL的自动递增问题编号
- 15. 如何自动增加mysql编号
- 16. PHP更新/ MySQL编辑行编辑器
- 17. 更改自动索引号Mysql的
- 18. php mysql - 更新时mysql会自动锁定行吗?
- 19. 动态SUMPRODUCT自动更新与新行
- 20. 获取刚插入MySQL的行的自动编号ID
- 21. 自动生成的每次更新的唯一编号列
- 22. Salesforce:更新托管对象的自动编号字段...
- 23. System.Threading.Timer执行自动更新
- 24. 进行自动更新
- 25. MySQL周编号和新年
- 26. SharePoint自动编号
- 27. (Excel)自动编号
- 28. 自动更新唯一标识号
- 29. MySQL更新 - 更新多行?
- 30. 在新的DataGridView行中自动设置外键和自动编号?
它是顺序的绝对重要吗? '1'和'3'只是让它独一无二。 – GibralterTop
是啊!我需要它被连续列出。 –