簡體   English   中英

如何從ID列遞增1的derby表中刪除行?

[英]how to delete a row from table in derby where ID column increment by 1?

我的表和ID列中的表存在問題,當我插入記錄>>時ID會自動增加1,但是當我刪除舊記錄並插入新記錄時,增量會繼續計數,而新記錄的ID卻沒有增加不要按順序獲取舊記錄的ID

我的刪除語句: String Q="DELETE FROM EMPLOYEE ( ID , NAME) WHERE NAME='"+lst1.getSelectedValue()+"'"; stmt.execute(Q); 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); 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); 首先非常感謝您的回答並嘗試幫助

您可以在應用程序端采用以下策略解決此問題:不真正刪除行,而是添加一個布爾字段“已刪除”,如果未刪除則為0,如果刪除則為1。

在這種情況下,您要避免ID序列出現漏洞。

否則,您將忍受ID序列中會有漏洞的事實。 這是什么問題?

順便說一下,您正在使用的數據庫是什么?

我讀過你的評論。 關鍵是所有數據庫都在表的末尾附加新記錄。 因此,如果您想重復使用ID,則有以下幾種可能性:

  1. 編寫一段代碼,檢查序列中是否有空閑的ID,並在INSERT中使用它
  2. 編寫一段代碼將免費ID保存在某處,並在插入時重復使用它們。

換句話說:您必須直接管理ID。 數據庫管理它們的方式是:

  1. 刪除記錄會產生一個不會自動填充的孔
  2. 添加新記錄將最后一個ID遞增

問候

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM