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 Show
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 0 1 2 3 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 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 5 sau
Trong cú pháp này
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àngVề 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 5. Tuy nhiên, khi máy chủ MySQL nhận được câu lệnh 5 có kích thước lớn hơn 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 6
Đâ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 Số là cột 8 là số byte Để đặt giá trị mới cho biến 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 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àngHãy lấy một ví dụ về việc sử dụng câu lệnh nhiều hàng 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 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 Trong hướng dẫn này, bạn đã học cách sử dụng câu lệnh MySQL 5 để chèn nhiều hàng vào một bảng |