【问题标题】:how to delete a row from table in derby where ID column increment by 1?如何从 derby 中的表中删除 ID 列递增 1 的行?
【发布时间】:2016-03-14 10:26:25
【问题描述】:

我的表格有问题,并且正好在 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); 首先非常感谢您的回答并尝试帮助

【问题讨论】:

  • 身份证号码是否重复使用为什么很重要?您的 ID 号应该是唯一值,任何两名员工都不应该获得相同的 ID。
  • @Bryan Pendleton 感谢提供帮助,当我删除员工时,我也删除了他的 ID,所以我想再次使用这个 ID。我不想继续计数 ID。如果你有什么想法请帮帮我。我的推荐

标签: java database netbeans derby


【解决方案1】:

你可以在应用端采用不真正删除行的策略来解决这个问题,而是添加一个布尔字段'deleted',如果不删除则为0,如果删除则为1。

如果您想避免 ID 序列中的漏洞,则可以这样做。

否则,您将接受 ID 序列中存在漏洞的事实。这有什么问题?

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

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

  1. 制作一段代码,检查序列中是否有空闲ID 并在 INSERT 中使用它
  2. 编写一段代码,将免费 ID 保存在某处,并在插入时重复使用。

换句话说:您必须直接管理 ID。 DB 管理它们的方式是:

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

问候

【讨论】:

  • 谢谢我亲爱的 Feather,我正在做 derby ..javaDB。如果你可以的话,请给我一些建议代码。非常感谢
  • 更新了答案。问候
  • 谢谢亲爱的,我会做的,我希望它成功。
猜你喜欢
  • 2012-12-28
  • 1970-01-01
  • 2011-02-06
  • 2020-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多