2011-07-13 22 views
6

Tôi có một bảng trong cơ sở dữ liệu sqlite android của tôi.There là một trường 'id' là tự động tăng dịch vụ ứng dụng chính key.My chèn một hàng vào mỗi phút trong bảng. Một số điểm trong thời gian tôi đang xóa các mục cũ hơn 5 ngày.So tổng số mục là limited.But id đang tăng lên. Vì vậy, tôi nhầm lẫn về giá trị của id vì nó đang tăng với mỗi mục mới.Điều kiện sẽ là gì khi 'id' trường vượt quá giá trị tối đa ?. giá trị tối đa của lĩnh vực này là gì? Làm thế nào để làm việc với điều này trong các trường hợp? Tôi có thể thực sự làm việc với lĩnh vực tăng tự động ở đây?Tìm hiểu trường số tự động sqlite android

Tuyên bố bảng Creation:

create table datausage (id integer primary key autoincrement," 
      + "date date not null,time text not null,level integer) 

Trả lời

20

Xem this cho các tài liệu chính thức. ROWID lớn nhất có thể là 9223372036854775807, nếu bạn viết 1000 mục một giây sẽ kéo dài hơn 10675199116 ngày: Tôi không nghĩ bạn sẽ gặp khó khăn với điều đó.

Khi đến cơ sở dữ liệu sẽ bắt đầu chọn ID không sử dụng, vì vậy bạn cũng sẽ ổn.

Sử dụng AUTO INCREMENT: đây là tùy chọn tốt nhất có sẵn cho bạn.

EDIT: cũng được gọi là AUTO INCREMENT vì một lý do. Nó được cho là sẽ tự động tăng lên.

+0

Cảm ơn Femi, tôi đã nhận được câu trả lời – Rasel

4

Khoá chính tăng tự động sẽ tiếp tục tăng mãi mãi (theo điều khoản của chúng tôi) và sẽ không thay thế các bản ghi đã xóa. Ngay cả khi bạn xóa các bản ghi cũ, trường id sẽ tăng liên tục.

Như đã được nêu trong các câu trả lời khác, có quá nhiều không gian cho trường đó.

+0

Điều tôi muốn nói là nó sẽ không trùng lặp ngay lập tức. Nó sẽ đợi cho đến khi giá trị tối đa đầu tiên. –

+0

Đúng vậy. – Femi

+0

Cảm ơn, một upvote cũng dành cho bạn (Fergus Barker) vì tôi không thể chấp nhận hai câu trả lời. – Rasel

0

Bạn không cần sử dụng tính năng tự động nếu bạn muốn đặt giá trị của riêng mình theo logic của bạn, nó sẽ tăng giá trị mỗi lần bạn chèn hàng. Bạn có thể thả bảng và tạo lại bảng nếu bạn muốn sử dụng tính năng tự động.

Các vấn đề liên quan