Java 删除一行后,我希望主键再次从1开始。是否可能

Java 删除一行后,我希望主键再次从1开始。是否可能,java,mysql,jdbc,Java,Mysql,Jdbc,下面是我所做的一个例子 { ... Class.forName("com.mysql.jdbc.Driver").newInstance(); con=DriverManager.getConnection(ConnectionStr,"root","root"); String prepareStr="DELETE FROM customer_maintenance where id=?"; PreparedStatement pst= con.prep

下面是我所做的一个例子

 {   
  ...

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:
您的SQL语法有错误


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

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

这是因为update语句不能保证按照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

如果在创建表时为Id列设置了自动递增和主键。自动增量将在删除数据库时自动处理此问题,无需担心。

您会遇到什么异常?com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:您的SQL语法有错误;如果您将此字段设置为AutoIncrement,请不要忽略它,只需保留它即可。当您稍后创建关系时(如果您愿意),这可能会使它们无效,而primaryKey ForIgngKey是明智的。jsut保持原样,你会习惯的:)谢谢你,先生…你能帮我解决这个问题吗?是的,先生,我明白你说的,这真的很有帮助。但是你能帮我或给我一些提示来解决这个问题吗?当我使用这个查询“SET@count=0;UPDATE…”直接在mysql中运行,它可以很好地编辑我的答案,并提供一个解决方案谢谢您,先生……我会尝试一下。您是否已将数据库连接配置为允许多个查询?如果没有,请阅读这里我想要的是,假设有4个pk[1,2,3,4],我会删除pk[1],而不是我想要的新pk为[1,2,3,4],但我得到的是[2,3,4]
String update_key="SET @count = 0;
    UPDATE customer_maintenance
    SET customer_maintenance.id = @count:= @count + 1
    ORDER BY customer_maintenance.id";