SQLite

(dịch tiếp và hết mục 21)
Tóm lại, ROWID hay _ROWID_ hay OID thì Sqlite đều hiểu đó là ROWID.

Mối quan hệ ROWID và INTEGER PRIMARY KEY
Tôi nghĩ khi nhìn vào đăc tính của ROWID là chúng ta có thể hiểu được, ROWID hoạt động giống như khóa chính INTEGER PRIMARY KEY. Trên thực tế nếu bạn đặt một cột chứa khóa chính INTEGER PRIMARY KEY, thì giá trị của nó hoàn toàn giống với ROWID.
Giả sử như bạn cố ý thiết định giá trị không phải là các số liên tiếp cho khóa chính INTEGER PRIMARY KEY, thì giá trị này được lưu trữ trên cả hai trường thông tin, cột khóa chính INTEGER PRIMARY KEY và ROWID.
Sau đây ta sẽ tiến hành thực nghiệm.
Tôi sẽ tạo một table chứa hai trường thông tin như dưới đây :
Mã:
create table user (userno integer primary key, name text);
Tiến hành nạp dữ liệu:
Mã:
insert into user values(1, 'Yamada');
insert into user values(6, 'Suzuki');
insert into user values(3, 'Honda');
Kiểm tra dữ liệu:
Mã:
select *, rowid from user;
Bạn cần đăng nhập để thấy đính kèm

Từ kết quả trên, chúng ta lấy ROWID nhưng kết quả hiện thị ra lại là tên của cột khóa chính INTEGER PRIMARY KEY.
Tôi không biết chính xác, có lẽ khi có trường thông tin khóa chính thì ROWID sẽ được đặt là cột thông tin này luôn.
 
22. Có gì khác khi thiết định AUTOINCREMENT và không thiết định AUTOINCREMENT
Mã:
CREATE TABLE TblName(ColmnName INTEGER PRIMARY KEY AUTOINCREMENT, ...);
Đầu tiên tôi tạo table mà không có thiết định AUTOINCREMENT :
Mã:
create table user(id integer primary key, name text);
Bạn cần đăng nhập để thấy đính kèm

Điền dữ liệu vào table:
Mã:
insert into user(name) values('Harada');
insert into user(name) values('Yamada');
insert into user(name) values('Tani');
Bạn cần đăng nhập để thấy đính kèm

Xóa dữ liệu:
Mã:
delete from user where id = 3;
Bạn cần đăng nhập để thấy đính kèm


Chèn dữ liệu mới:
Mã:
insert into user(name) values('Ueda');
Bạn cần đăng nhập để thấy đính kèm

Id tự động tăng lên là 3.

Bây giờ tôi tạo table mà có thiết định AUTOINCREMENT :
Mã:
create table user2(id integer primary key autoincrement, name text);
Bạn cần đăng nhập để thấy đính kèm


Thực hiện chèn dữ liệu :
Mã:
insert into user2(name) values('Harada'); insert into user2(name) values('Yamada'); insert into user2(name) values('Tani');
Bạn cần đăng nhập để thấy đính kèm


Thực hiện xóa dữ liệu :
Mã:
delete from user2 where id = 3;
Bạn cần đăng nhập để thấy đính kèm

Chèn dữ liệu :
Mã:
insert into user2(name) values('Ueda');
Bạn cần đăng nhập để thấy đính kèm


Như vậy khi thiết định AUTOINCREMENT thì ID cũ được tái sử dụng, bây giờ nó tự động tăng ID lên 4.
Nếu không thiết định AUTOINCREMENT, thì ID sẽ tăng dựa vào số lượng data đang có.
 
Top