gpt4 book ai didi

java - 删除一行后我希望主键再次从1开始,请问有可能吗

转载 作者:行者123 更新时间:2023-11-29 19:15:12 25 4
gpt4 key购买 nike

下面是我所做的示例

 {   
...

Class.forName("com.mysql.jdbc.Driver").newInstance();
con=DriverManager.getConnection(ConnectionStr,"root","root");

String prepareStr="DELETE FROM customer_maintenance where id=?";
PreparedStatement pst= con.prepareStatement(prepareStr);
pst.setInt(1,id);
pst.executeUpdate();
String update_key="SET @count = 0; UPDATE customer_maintenance SET customer_maintenance.id = @count:= @count + 1;";

PreparedStatement pst1=con.prepareStatement(update_key);
pst1.executeUpdate();
System.out.println("UPDATE");


}

抛出以下异常

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:
You have an error in your SQL syntax

而且我不确定是否可以在每次删除行时更新主键。

最佳答案

您应该提供您得到的异常,但我在代码中看到的第一个问题是您可能尝试更新行设置 ID = x,而另一行仍然可能有 ID = x,因此重复 key 错误。

这是因为该更新语句不能保证行按照 ID 顺序进行更新。

使用示例中的值:

Start  Delete    Update1   Update2
ID ID ID ID
1 (del)
2 2 2 2
3 3 1 (upd) 1
4 4 4 2 (upd) <- duplicate key

编辑

最简单的修复方法是在查询中添加一个 order by 子句,以便从较小的 ID 开始更新行。

您还应该删除查询末尾的 ;

String update_key="SET @count = 0;
UPDATE customer_maintenance
SET customer_maintenance.id = @count:= @count + 1
ORDER BY customer_maintenance.id";

关于java - 删除一行后我希望主键再次从1开始,请问有可能吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42766196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com