SQLite AUTOINCREMENT là một từ khóa được sử dụng để tự động tăng giá trị của một trường trong bảng. Chúng tôi có thể tự động tăng giá trị trường bằng cách sử dụng từ khóa AUTOINCREMENT khi tạo bảng có tên cột cụ thể để tăng tự động
Chỉ có thể sử dụng từ khóa AUTOINCREMENT với trường INTEGER
cú pháp
Cách sử dụng cơ bản của từ khóa AUTOINCREMENT như sau -
CREATE TABLE table_name[ column1 INTEGER AUTOINCREMENT, column2 datatype, column3 datatype, ..... columnN datatype, ];
Ví dụ
Xem xét bảng COMPANY được tạo như sau -
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];
Bây giờ, hãy chèn các bản ghi sau vào bảng COMPANY -
INSERT INTO COMPANY [NAME,AGE,ADDRESS,SALARY] VALUES [ 'Paul', 32, 'California', 20000.00 ]; INSERT INTO COMPANY [NAME,AGE,ADDRESS,SALARY] VALUES ['Allen', 25, 'Texas', 15000.00 ]; INSERT INTO COMPANY [NAME,AGE,ADDRESS,SALARY] VALUES ['Teddy', 23, 'Norway', 20000.00 ]; INSERT INTO COMPANY [NAME,AGE,ADDRESS,SALARY] VALUES [ 'Mark', 25, 'Rich-Mond ', 65000.00 ]; INSERT INTO COMPANY [NAME,AGE,ADDRESS,SALARY] VALUES [ 'David', 27, 'Texas', 85000.00 ]; INSERT INTO COMPANY [NAME,AGE,ADDRESS,SALARY] VALUES [ 'Kim', 22, 'South-Hall', 45000.00 ]; INSERT INTO COMPANY [NAME,AGE,ADDRESS,SALARY] VALUES [ 'James', 24, 'Houston', 10000.00 ];
Thao tác này sẽ chèn 7 bộ dữ liệu vào bảng COMPANY và COMPANY sẽ có các bản ghi sau -
ID NAME AGE ADDRESS SALARY ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000.0 2 Allen 25 Texas 15000.0 3 Teddy 23 Norway 20000.0 4 Mark 25 Rich-Mond 65000.0 5 David 27 Texas 85000.0 6 Kim 22 South-Hall 45000.0 7 James 24 Houston 10000.0
Python có nhiều trình điều khiển cơ sở dữ liệu khác nhau cho PostgreSQL. Hiện tại, phiên bản được sử dụng nhiều nhất là psycopg2 vì nó triển khai đầy đủ Python DB-API 2. 0 đặc điểm kỹ thuật. psycopg2 cung cấp nhiều tính năng hữu ích như con trỏ phía máy khách và phía máy chủ, thông báo và liên lạc không đồng bộ, hỗ trợ lệnh COPY, v.v.
Cài đặt
psycopg2 có thể được tải xuống giống như bất kỳ mô-đun nào khác bằng lệnh sau
pip install psycopg2
Tiếp cận
Cách PostgreSQL tạo Khóa chính với tính năng tăng tự động
Một cột phải được xác định bằng SERIAL PRIMARY KEY. Ở đây SERIAL không phải là một kiểu dữ liệu đúng, mà chỉ đơn giản là ký hiệu tốc ký yêu cầu Postgres tạo một mã định danh duy nhất, tăng dần tự động cho cột đã chỉ định. Chỉ cần đặt một cột là SERIAL với PRIMARY KEY được đính kèm, Postgres sẽ xử lý tất cả các công việc hậu trường phức tạp và tự động tăng cột đã chỉ định của chúng tôi bằng một giá trị khóa chính, duy nhất cho mỗi INSERT
thông tin cơ sở dữ liệu
Tên cơ sở dữ liệu. testdb
Tên bảng. NGƯỜI LAO ĐỘNG
Trong BẢNG NHÂN VIÊN, cột có tên EMPLOYEE_ID sẽ được triển khai dưới dạng cột Khóa chính tăng tự động.
cú pháp
CREATE TABLE [
KHÓA CHÍNH NỐI TIẾP KHÔNG NULL,
.
.
];
Việc triển khai tạo bảng với thông số kỹ thuật như vậy được đưa ra dưới đây
Python3
import
psycopg2
def
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];0
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];1
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];2
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];3
import
0_______11____52____53
import
4import
5
import
4
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];2
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];3
import
9sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];3
psycopg2
1psycopg2
2sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];3
psycopg2
4psycopg2
5psycopg2
6______67
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];3
psycopg2
9
0sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];3
2
3sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];3
5
6import
4
8
9
0
6
import
4
3
import
4____75____13
7
import
4
9
_______54____91____92
6
def
4
import
4def
6
import
4def
8
________ 54 ________ 100
________ 54 ________ 102 ________ 13 ________ 104
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];05
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];06
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];05
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];08
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];05
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];10
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];05
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];12
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];05
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];14
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];05
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];16
import
4
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];18
_______54____120
import
4
8
9
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];24
6def
4
import
4
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];28
import
4
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];30
def
4
import
4
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];33
_______54____135
def
4
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];1
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];38
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];39
import
4
8import
02
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];1____504____53
import
4import
07
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];2
import
09 import
10 import
0import
3import
13import
14
import
07 import
18
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];3
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];3
import
21import
3sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];1____524
Chúng ta có thể thấy bảng được tạo bằng công cụ pgadmin
Bây giờ, Chèn cần được thực hiện để xem tính năng tự động tăng của chúng tôi có hoạt động hay không. Điều này có thể được thực hiện trực tiếp thông qua pgadmin hoặc sử dụng mã python
cách pgadmin
Dưới đây là ảnh chụp màn hình hiển thị việc thực thi các truy vấn chèn và tập hợp kết quả
Giải thích về khóa chính tăng tự động
Sử dụng mã trăn
Python3
import
psycopg2
import
2____53
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];1____530
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];3
import
32sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];3
psycopg2
4psycopg2
5import
36psycopg2
7____13psycopg2
9psycopg2
5
import
36import
42
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];3
2psycopg2
5import
36import
47
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];3
5psycopg2
5import
36import
52
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];3
psycopg2
1
6import
56
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];1____75
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];3
import
60import
56
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];1____563
sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];1____565____13
import
67sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];1
import
69sqlite> CREATE TABLE COMPANY[ ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR[50], SALARY REAL ];3
9import
72psycopg2
5import
74psycopg2
5import
76psycopg2
5import
78psycopg2
5import
80
6