如何从derby中的表中删除一行,其中ID列增加1?

时间:2016-03-14 10:26:25

标签: java database netbeans derby

我的表格有问题,而且正好在ID列中, 当我插入记录>> ID将自动增加1, 但问题,当我删除旧记录  并插入新记录增量继续计数  并且新记录的ID没有按顺序获取旧记录的ID ;

我的删除声明: String Q="DELETE FROM EMPLOYEE ( ID , NAME) WHERE NAME='"+lst1.getSelectedValue()+"'"; stmt.execute(Q);

创建声明:       stmt.execute("CREATE TABLE EMPLOYEE(ID INTEGER NOT NULL PRIMARY KEY" + " GENERATED ALWAYS AS IDENTITY(START WITH 1, INCREMENT BY 1)" + ",NAME varchar(50),BIRTHDAY varchar(50),BIRTHMONTH varchar(50)" + ",BIRTHYEAR varchar(50),SEX varchar(50),DEPARTMENT varchar(50))");}

插入声明: String Query="INSERT INTO EMPLOYEE(NAME , BIRTHDAY , BIRTHMONTH , " + "BIRTHYEAR , SEX , DEPARTMENT) VALUES('"+txname.getText()+"','" + ""+compd.getSelectedItem()+"','"+compm.getSelectedItem()+"','" + ""+compy.getSelectedItem()+"','"+composx.getSelectedItem()+"','" + ""+txdep.getText()+"')"; stmt.execute(Query); 非常感谢首先回答并尝试帮助

1 个答案:

答案 0 :(得分:0)

您可以在应用程序端解决这个问题,采用不真正删除行的策略,但添加布尔字段'删除'如果没有删除则为0,如果删除则为1。

如果您想避免ID序列中的漏洞,请执行此操作。

否则你会感到ID序列中有漏洞。有什么问题?

顺便问一下,你正在使用的数据库是什么?

我读了你的评论。关键是所有数据库都在表的末尾附加新记录。因此,如果您想重用ID,您就有这些可能性:

  1. 制作一段代码以检查序列中是否有空闲ID 并在INSERT中使用它
  2. 制作一段代码以在某处保存免费ID,并在插入时重复使用它们。
  3. 换句话说:您必须直接管理ID。数据库管理它们的方式是:

    1. 删除记录会产生一个不会自动填充的洞
    2. 添加新记录会增加最后一个ID
    3. 此致