2012-01-23 37 views
6

Tôi đang tạo một trình bao bọc API SQLite C. Và tôi muốn trả về rowid như kiểu số nguyên. Để đánh dấu trường hợp lỗi, tôi cần giá trị không hợp lệ của rowid. Có giá trị không hợp lệ của hàng SQLite không? Hoặc tất cả các giá trị trong số nguyên 64 bit đã ký hợp lệ cho rowid? (vì nếu có, tôi phải chọn một cách khác để triển khai trường hợp lỗi đánh dấu)Phạm vi hợp lệ của rowid SQLite?

+0

Đây là thông số kỹ thuật về rowid: http://www.sqlite.org/autoinc.html – Eonil

Trả lời

13

ID hàng là các số nguyên được ký 64 bit, do đó tối đa là 0x7FFFFFFFFFFFFFFFLL. Nhưng trừ khi ID hàng tiêu cực hoặc số không được nhập một cách rõ ràng, ID hàng được tạo tự động luôn lớn hơn 0. Nếu bạn có thể chắc chắn rằng ID hàng sẽ luôn được tạo tự động thì 0 hoặc -1 sẽ là giá trị an toàn để trả về trạng thái lỗi.

Suy nghĩ thêm, tôi nhận thấy rằng cuộc gọi API sqlite3_last_insert_rowid trả về số không nếu không có gì được chèn vào bảng, do đó làm cho không có ID hàng không "không hợp lệ".

+0

Cảm ơn bạn đã đề cập đến các giá trị âm và không rõ ràng có thể được chèn vào. Tôi sẽ đi một cái gì đó cơ chế khác. :) – Eonil

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