MySQL cuối cùng chèn id nhiều hàng

mysql> Select Last_Insert_Id();

+------------------+
| Last_Insert_Id() |
+------------------+
| 3                |
+------------------+

1 row in set (0.00 sec)
7

mysql> Select Last_Insert_Id();

+------------------+
| Last_Insert_Id() |
+------------------+
| 3                |
+------------------+

1 row in set (0.00 sec)
8

mysql> Select Last_Insert_Id();

+------------------+
| Last_Insert_Id() |
+------------------+
| 3                |
+------------------+

1 row in set (0.00 sec)
9

INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n);

Code language: SQL (Structured Query Language) (sql)
0

INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n);

Code language: SQL (Structured Query Language) (sql)
1

INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n);

Code language: SQL (Structured Query Language) (sql)
2

INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n);

Code language: SQL (Structured Query Language) (sql)
3

INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n);

Code language: SQL (Structured Query Language) (sql)
4

Như chúng ta đã biết, hàm LAST_INSERT_ID() của MySQL trả về số thứ tự được tạo mới nhất nhưng trong trường hợp chèn nhiều hàng, hàm này sẽ trả về số thứ tự được tạo bởi hàng được chèn đầu tiên

Ví dụ

mysql> Insert into Student(Name) values('Ram'),('Mohan'),('Aryan');
Query OK, 3 rows affected (0.03 sec)
Records: 3 Duplicates: 0 Warnings: 0

Truy vấn trên chèn ba giá trị vào bảng Sinh viên với sự trợ giúp của Truy vấn chèn nhiều hàng. Có thể kiểm tra giá trị của Cột 'Id' với sự trợ giúp của truy vấn sau -

mysql> Select * from Student;

+----+-------+
| Id | Name  |
+----+-------+
| 1 | Raman  |
| 2 | Rahul  |
| 3 | Ram    |
| 4 | Mohan  |
| 5 | Aryan  |
+----+-------+

5 rows in set (0.00 sec)

Điều đó có nghĩa là Last_Insert_Id() phải trả về giá trị đầu ra là 5 nhưng như chúng ta có thể thấy nó trả về giá trị 3 như sau:

mysql> Select Last_Insert_Id();

+------------------+
| Last_Insert_Id() |
+------------------+
| 3                |
+------------------+

1 row in set (0.00 sec)

Nó trả về giá trị 3 vì 3 là giá trị của hàng được chèn đầu tiên với truy vấn chèn nhiều hàng phía trên

Có phải chúng ta đang nói về các cột auto_increment ở đây cho số ID không? . Nếu bạn thêm nhiều hàng cùng một lúc như bạn đang làm, nó sẽ cung cấp số ID của hàng đầu tiên trong số những hàng đã được thêm vào. Biết rằng các ID tăng lên một lần mỗi lần, sau đó bạn có thể tìm ra ID của tất cả các hàng

Ví dụ: nếu bạn chèn 4 hàng và last_insert_id() cho 5, thì bạn biết ID là 5, 6, 7, 8

Điều quan trọng cần lưu ý là last_insert_id() cung cấp giá trị auto_increment cuối cùng trên kết nối hiện tại , vì vậy nhiều kết nối thực hiện thao tác chèn đồng thời sẽ không ảnh hưởng . Tôi tin rằng nó được thiết kế có mục đích chính xác cho tình huống này.

Mặc dù tôi không chắc chắn, nhưng tôi cũng cho rằng khi bạn thực hiện một câu lệnh INSERT để thêm nhiều hàng, nó được thực hiện như một thao tác nguyên tử. Vì vậy, nếu bạn có hai lần chèn diễn ra trên hai kết nối khác nhau, bạn sẽ không bị xen kẽ – một kết nối sẽ thêm tất cả các hàng của nó, sau đó là tất cả các hàng của nó, chứ không phải một kết nối thêm một số hàng của nó, sau đó thêm một số hàng khác. . Tuy nhiên, nếu bạn thực hiện chúng dưới dạng các câu lệnh INSERT riêng biệt, thì chắc chắn bạn có thể nhận được sự xen kẽ như thế

Tóm lược. trong hướng dẫn này, bạn sẽ học cách sử dụng một câu lệnh MySQL

INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n);

Code language: SQL (Structured Query Language) (sql)
5 để chèn nhiều hàng vào một bảng

Câu lệnh nhiều hàng của MySQL INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n); Code language: SQL (Structured Query Language) (sql)5

Để chèn nhiều hàng vào một bảng, bạn sử dụng mẫu câu lệnh

INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n);

Code language: SQL (Structured Query Language) (sql)
5 sau

INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n);

Code language: SQL (Structured Query Language) (sql)

Trong cú pháp này

  • Đầu tiên, chỉ định tên của bảng mà bạn muốn chèn sau từ khóa

    SHOW VARIABLES LIKE 'max_allowed_packet';

    Code language: SQL (Structured Query Language) (sql)
    0
  • Thứ hai, chỉ định danh sách cột được phân tách bằng dấu phẩy bên trong dấu ngoặc đơn sau tên bảng
  • Thứ ba, chỉ định danh sách dữ liệu hàng được phân tách bằng dấu phẩy trong mệnh đề

    SHOW VARIABLES LIKE 'max_allowed_packet';

    Code language: SQL (Structured Query Language) (sql)
    1. Mỗi phần tử của danh sách đại diện cho một hàng. Số lượng giá trị trong mỗi phần tử phải giống với số lượng cột trong

    SHOW VARIABLES LIKE 'max_allowed_packet';

    Code language: SQL (Structured Query Language) (sql)
    2

MySQL INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n); Code language: SQL (Structured Query Language) (sql)5 giới hạn nhiều hàng

Về lý thuyết, bạn có thể chèn bất kỳ số lượng hàng nào bằng cách sử dụng một câu lệnh

INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n);

Code language: SQL (Structured Query Language) (sql)
5. Tuy nhiên, khi máy chủ MySQL nhận được câu lệnh

INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n);

Code language: SQL (Structured Query Language) (sql)
5 có kích thước lớn hơn

SHOW VARIABLES LIKE 'max_allowed_packet';

Code language: SQL (Structured Query Language) (sql)
6, nó sẽ đưa ra lỗi gói quá lớn và chấm dứt kết nối

Câu lệnh này hiển thị giá trị hiện tại của biến

SHOW VARIABLES LIKE 'max_allowed_packet';

Code language: SQL (Structured Query Language) (sql)
6

SHOW VARIABLES LIKE 'max_allowed_packet';

Code language: SQL (Structured Query Language) (sql)

Đây là đầu ra trên máy chủ cơ sở dữ liệu MySQL của chúng tôi. Lưu ý rằng giá trị trong máy chủ của bạn có thể khác

MySQL cuối cùng chèn id nhiều hàng
MySQL cuối cùng chèn id nhiều hàng

Số là cột

SHOW VARIABLES LIKE 'max_allowed_packet';

Code language: SQL (Structured Query Language) (sql)
8 là số byte

Để đặt giá trị mới cho biến

SHOW VARIABLES LIKE 'max_allowed_packet';

Code language: SQL (Structured Query Language) (sql)
6, bạn sử dụng câu lệnh sau

mysql> Select * from Student;

+----+-------+
| Id | Name  |
+----+-------+
| 1 | Raman  |
| 2 | Rahul  |
| 3 | Ram    |
| 4 | Mohan  |
| 5 | Aryan  |
+----+-------+

5 rows in set (0.00 sec)
2

trong đó

mysql> Select * from Student;

+----+-------+
| Id | Name  |
+----+-------+
| 1 | Raman  |
| 2 | Rahul  |
| 3 | Ram    |
| 4 | Mohan  |
| 5 | Aryan  |
+----+-------+

5 rows in set (0.00 sec)
20 là một số nguyên đại diện cho số kích thước gói tối đa được phép tính bằng byte

Lưu ý rằng

SHOW VARIABLES LIKE 'max_allowed_packet';

Code language: SQL (Structured Query Language) (sql)
6 không có ảnh hưởng đến câu lệnh
mysql> Select * from Student;

+----+-------+
| Id | Name  |
+----+-------+
| 1 | Raman  |
| 2 | Rahul  |
| 3 | Ram    |
| 4 | Mohan  |
| 5 | Aryan  |
+----+-------+

5 rows in set (0.00 sec)
22. Câu lệnh
mysql> Select * from Student;

+----+-------+
| Id | Name  |
+----+-------+
| 1 | Raman  |
| 2 | Rahul  |
| 3 | Ram    |
| 4 | Mohan  |
| 5 | Aryan  |
+----+-------+

5 rows in set (0.00 sec)
23 có thể chèn bao nhiêu hàng tùy thích

MySQL INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n); Code language: SQL (Structured Query Language) (sql)5 ví dụ nhiều hàng

Hãy lấy một ví dụ về việc sử dụng câu lệnh nhiều hàng

INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n);

Code language: SQL (Structured Query Language) (sql)
5

Đầu tiên, tạo một bảng mới có tên là

mysql> Select * from Student;

+----+-------+
| Id | Name  |
+----+-------+
| 1 | Raman  |
| 2 | Rahul  |
| 3 | Ram    |
| 4 | Mohan  |
| 5 | Aryan  |
+----+-------+

5 rows in set (0.00 sec)
26 để trình diễn

mysql> Select * from Student;

+----+-------+
| Id | Name  |
+----+-------+
| 1 | Raman  |
| 2 | Rahul  |
| 3 | Ram    |
| 4 | Mohan  |
| 5 | Aryan  |
+----+-------+

5 rows in set (0.00 sec)
8

Thứ hai, sử dụng câu lệnh nhiều hàng

INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n);

Code language: SQL (Structured Query Language) (sql)
5 để chèn hai hàng vào bảng
mysql> Select * from Student;

+----+-------+
| Id | Name  |
+----+-------+
| 1 | Raman  |
| 2 | Rahul  |
| 3 | Ram    |
| 4 | Mohan  |
| 5 | Aryan  |
+----+-------+

5 rows in set (0.00 sec)
26

mysql> Select Last_Insert_Id();

+------------------+
| Last_Insert_Id() |
+------------------+
| 3                |
+------------------+

1 row in set (0.00 sec)
0

MySQL đã đưa ra thông báo sau

mysql> Select Last_Insert_Id();

+------------------+
| Last_Insert_Id() |
+------------------+
| 3                |
+------------------+

1 row in set (0.00 sec)
1

Điều đó có nghĩa là hai hàng đã được chèn vào bảng

mysql> Select * from Student;

+----+-------+
| Id | Name  |
+----+-------+
| 1 | Raman  |
| 2 | Rahul  |
| 3 | Ram    |
| 4 | Mohan  |
| 5 | Aryan  |
+----+-------+

5 rows in set (0.00 sec)
26 thành công

Lưu ý rằng khi bạn chèn nhiều hàng và sử dụng hàm

mysql> Select * from Student;

+----+-------+
| Id | Name  |
+----+-------+
| 1 | Raman  |
| 2 | Rahul  |
| 3 | Ram    |
| 4 | Mohan  |
| 5 | Aryan  |
+----+-------+

5 rows in set (0.00 sec)
80 để lấy id được chèn cuối cùng của cột
mysql> Select * from Student;

+----+-------+
| Id | Name  |
+----+-------+
| 1 | Raman  |
| 2 | Rahul  |
| 3 | Ram    |
| 4 | Mohan  |
| 5 | Aryan  |
+----+-------+

5 rows in set (0.00 sec)
81, bạn sẽ chỉ nhận được id của hàng được chèn đầu tiên, không phải id của hàng được chèn cuối cùng

Thứ ba, sử dụng câu lệnh

mysql> Select * from Student;

+----+-------+
| Id | Name  |
+----+-------+
| 1 | Raman  |
| 2 | Rahul  |
| 3 | Ram    |
| 4 | Mohan  |
| 5 | Aryan  |
+----+-------+

5 rows in set (0.00 sec)
82 sau để xác minh các phần chèn

mysql> Select Last_Insert_Id();

+------------------+
| Last_Insert_Id() |
+------------------+
| 3                |
+------------------+

1 row in set (0.00 sec)
6

Hình ảnh này cho thấy đầu ra

MySQL cuối cùng chèn id nhiều hàng
MySQL cuối cùng chèn id nhiều hàng

Trong hướng dẫn này, bạn đã học cách sử dụng câu lệnh MySQL

INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n);

Code language: SQL (Structured Query Language) (sql)
5 để chèn nhiều hàng vào một bảng