2014-11-01 4 views
1

AUTO_INCREMENTING ID 열과 이름 열이있는 데이터베이스가 있습니다. 데이터에서 행을 삭제하면 순서가 바뀌었기 때문에 다른 행 ID를 모두 업데이트하고 싶습니다. 매우 도움이되지 않습니다.Java 행을 삭제할 때 행을 업데이트하는 MySQL

stmt = conn.createStatement(); 
     rs = stmt.executeQuery("SELECT COUNT(id) FROM " + table_name_products); 
     int count = 0; 
     while(rs.next()){ 
      count = rs.getInt("COUNT(id)"); 
     } 

     stmt = conn.createStatement(); 
     for(int i = 1; i <= count; i++){ 
      if(i > id){ 
       stmt.addBatch("UPDATE " + table_name_products + " SET id = "+ i-- +" WHERE id = "+ i +";"); 
      } 
     } 
+3

나는 생각하지 않는다 –

+2

행이 생성 된 후에 id를 변경하지 않아도됩니다. 공백을 무시하십시오 :-) 또는'deleted' 부울 열을 기본적으로 false로 설정하고 논리적으로 행을 삭제할 때는 true로 설정하십시오. – Subin

+0

대단히 감사합니다. Subin은 멋진 아이디어입니다. 감사합니다. – DaGuus

답변

0

나는 이것이 가능하다고 생각하지 않습니다

나는이 시도했다.

유일한 해결 방법은 모든 행을 삭제 한 다음에 해당 행을 삭제 한 다음 다시 캐싱 된 행을 테이블에 추가하는 것입니다.

이 작업을 수행하는 데이터베이스 관리 명령이있을 수 있지만 삭제할 때마다 수행하지 않으려합니다.

+0

이 프로그램은 가볍게 사용되기 때문에이 문제는 너무 많이 발생하지 않습니다. – DaGuus

0

trigger은 어떤 데이터베이스입니까? 보세요 here.

데이터베이스 트리거는 자동으로 데이터베이스에서 특정 테이블 또는 뷰의 특정 이벤트에 대한 응답으로 을 실행 절차 적 코드입니다.

관련 문제