2012-09-01 5 views
0

테이블에서 행을 삭제하면 rowID 번호가 삭제됩니다. 이것은 rowID가 진정으로 더 이상 정렬되지 않는다는 것을 의미합니다. 이 경우 새 ID가 정렬되고 연속되도록 rowID를 재설정하려고합니다.행을 삭제 한 후 sqlite에서 rowid를 재설정하십시오.

ALTER TABLE my_table DROP ID; 
ALTER TABLE my_table AUTO_INCREMENT = 1; 
ALTER TABLE my_table ADD ID int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; 

을 ...하지만이 작동하지 않습니다 나는 ALTER TABLE이 작업을 수행하기 위해 노력했다. 어떻게 연속 번호를 얻을 수 있습니까?

+1

ID가 다른 테이블에서 ForeignKey로 사용되면 어떻게 될까요? 그 테이블도 업데이트합니까? 번호 매기기에 '구멍'을 남기면 어떻게 될까요? 여전히 해당 열을 정확하게 정렬 할 수 있습니다. – Steve

+0

rowid가'delete' 다음에 어떻게 정렬되지 않을까요? –

답변

0

다소 기술적으로 가능하면 - Set start value for AUTOINCREMENT in SQLite입니다. 그러나 autoincrement를 잘못 사용하는 것처럼 들리지만 테이블에서 행이 삭제 될 때마다 모든 행의 id 값을 변경하지 않아도됩니다. 이렇게하면 쿼리의 다른 테이블을 한꺼번에 조인하는 작업이 매우 어려워지고 큰 테이블에서 끔찍하게 느려질 수 있습니다. ID가 1,2,4이고 어쨌든 1,2,3이 아닌 것은 왜 중요한가요? 너는 여전히 같은 방법으로 ORDER BY 일 수있다.

+0

ID는 중요하지 않지만 DataGridView에서 각 행의 번호를 갖고 싶기 때문에이 작업을 수행합니다!이 작업은 내가 찾은 솔루션입니다!이 작업을 수행하는 더 좋은 방법은 무엇입니까? – mgh

관련 문제