Làm cách nào để tìm ID được chèn lần cuối trong MySQL?

Nếu giá trị cuối cùng của cột AUTO_INCREMENT hiện tại của bạn là 8 và khi bạn thực hiện truy vấn trên trên Bảng, giá trị này sẽ trả về 9

Trong PHP có một phương thức sẵn có chỉ trả về id chèn cuối cùng theo truy vấn chèn trước đó

Làm cách nào để tìm ID được chèn lần cuối trong MySQL?


nội dung

  1. mysqli_insert_id()
  2. Ví dụ
  3. Phần kết luận

1. mysqli_insert_id()

Nó trả về giá trị cột AUTO_INCREMENT cuối cùng của truy vấn chèn đã thực hiện thành công trước đó

Cú pháp –

mysqli_insert_id($connection-variable)

Nó trả về 0 khi bảng không có bất kỳ cột AUTO_INCREMENT nào


2. Ví dụ

đầu ra

last id : 4

3. Kết luận

Bây giờ bạn đã biết cách lấy giá trị id chèn cuối cùng bằng phương thức có sẵn. Nhưng bạn cần gọi nó ngay sau truy vấn chèn vì nó hoạt động theo truy vấn cuối cùng

Nếu bạn đang duy trì cột id theo cách thủ công và không sử dụng AUTO_INCREMENT trong bảng MySQL thì đó không phải là lựa chọn tốt, bạn có thể sử dụng các tùy chọn khác

Nhiều bài viết về tìm ID được chèn cuối cùng của một bảng trong MySQL. Tuy nhiên, thật khó để tìm thấy bất kỳ hướng dẫn nào liên quan đến việc tìm ID được chèn cuối cùng bằng hai bảng

Trong bài viết này, chúng tôi sẽ cố gắng giải quyết trường hợp đặc biệt này và tất nhiên, chúng tôi cũng sẽ khám phá thời điểm chúng tôi sử dụng lệnh

INSERT INTO cars (name)
VALUES ('BMW'),('Mercedes'),('Audi');
SELECT * FROM cars;
3. Trước tiên, hãy xem
INSERT INTO cars (name)
VALUES ('BMW'),('Mercedes'),('Audi');
SELECT * FROM cars;
4 là gì ID và mối quan hệ của nó với
INSERT INTO cars (name)
VALUES ('BMW'),('Mercedes'),('Audi');
SELECT * FROM cars;
3

ID INSERT INTO cars (name) VALUES ('BMW'),('Mercedes'),('Audi'); SELECT * FROM cars; 4 trong MySQL là gì

Khi xử lý cơ sở dữ liệu, chúng ta thường cần ID cho các bảng cụ thể để sử dụng chúng làm khóa chính. Vì khóa chính xác định một bản ghi trong cơ sở dữ liệu nên nó phải là duy nhất

Tuy nhiên, làm thế nào chúng tôi có thể đảm bảo rằng khóa chính luôn là duy nhất?

Chiến lược này có thể hiệu quả, nhưng rất khó và không thể sai lầm. Chúng tôi có thể sử dụng hàm

INSERT INTO cars (name)
VALUES ('BMW'),('Mercedes'),('Audi');
SELECT * FROM cars;
7 của MySQL để tạo các khóa chính nhằm tránh sự phức tạp này và đảm bảo rằng chúng luôn là duy nhất

Với kiểu dữ liệu

INSERT INTO cars (name)
VALUES ('BMW'),('Mercedes'),('Audi');
SELECT * FROM cars;
8, tăng tự động được sử dụng. Cả đã ký và chưa ký loại dữ liệu
INSERT INTO cars (name)
VALUES ('BMW'),('Mercedes'),('Audi');
SELECT * FROM cars;
8 đều hỗ trợ các giá trị

Chỉ một số dương có thể được lưu trữ trong kiểu dữ liệu

00. Khi một bản ghi mới được nhập vào cơ sở dữ liệu, tự động tăng cho phép một số duy nhất được tạo tự động

Hãy xem một ví dụ

1

Sau khi chúng ta đã tạo bảng bây giờ, chúng ta có thể chèn các giá trị. Chúng ta cũng không cần chỉ định giá trị cho cột

01

INSERT INTO cars (name)
VALUES ('BMW'),('Mercedes'),('Audi');
SELECT * FROM cars;

đầu ra

0

Nó sẽ lấy

02 làm giá trị bắt đầu theo mặc định, tăng dần 1. Chúng ta có thể thay đổi bảng giá trị mới nếu cần bắt đầu từ giá trị khác

6

Cuối cùng, chúng ta cần cẩn thận khi xác định kiểu dữ liệu cho các số tự động tăng. Ví dụ: nếu chúng tôi đặt nó thành

03, nó sẽ giới hạn số lượng bản ghi là 255

Chúng ta có thể sử dụng kiểu dữ liệu

INSERT INTO cars (name)
VALUES ('BMW'),('Mercedes'),('Audi');
SELECT * FROM cars;
8 vì giới hạn của nó đủ lớn. Vì vậy, bây giờ chúng ta đã biết khá nhiều về hàm
05 và chúng ta có thể tiếp tục với hàm 
06

Tìm ID được chèn lần cuối của cột INSERT INTO cars (name) VALUES ('BMW'),('Mercedes'),('Audi'); SELECT * FROM cars; 4 trong MySQL

08 trả về 
09 được tạo đầu tiên được chèn cho cột 
INSERT INTO cars (name)
VALUES ('BMW'),('Mercedes'),('Audi');
SELECT * FROM cars;
4 do câu lệnh
61 được thực hiện gần đây nhất. Nếu thao tác chèn không thành công thì giá trị của ID được chèn lần cuối sẽ không thay đổi

Chúng tôi sẽ thực hiện nó cho bảng mà chúng tôi đã tạo ở trên

đầu ra

last id : 4
6

Như bạn có thể thấy, mặc dù câu lệnh

61 đã chèn ba hàng vào bảng 
63, hàng đầu tiên được chèn thành công là hàng có 
64. Giả sử chúng ta cần ID cuối cùng từ câu lệnh 
65 (trong trường hợp này. 3)

Chúng tôi sẽ sử dụng chức năng

66 của MySQL. Nó trả về giá trị lớn nhất hiện tại cho một cột cụ thể

INSERT INTO cars (name)
VALUES ('BMW'),('Mercedes'),('Audi');
SELECT * FROM cars;
2

đầu ra

INSERT INTO cars (name)
VALUES ('BMW'),('Mercedes'),('Audi');
SELECT * FROM cars;
3

Bây giờ chúng ta sẽ phân tích một trường hợp khác khi chúng ta lần lượt chèn dữ liệu vào hai bảng và chúng ta cần lấy ID được chèn cuối cùng của bảng đầu tiên

INSERT INTO cars (name)
VALUES ('BMW'),('Mercedes'),('Audi');
SELECT * FROM cars;
4

đầu ra

INSERT INTO cars (name)
VALUES ('BMW'),('Mercedes'),('Audi');
SELECT * FROM cars;
5

Trước tiên, hãy hiểu mã mà chúng tôi đã thực thi. Chúng tôi đã tạo hai bảng, cụ thể là

63 và 
68

Sau đó, chúng tôi đã thay đổi ID bắt đầu của

68 để phân biệt ID của hai bảng và đặt thành 4 bằng phương pháp chúng tôi đã học ở trên. Chúng ta có thể thấy từ đầu ra rằng nó trả về ID được chèn cuối cùng của bảng thứ hai

Điều gì xảy ra nếu chúng ta cần ID được chèn vào cuối cùng của bảng

63?

Chúng tôi có thể làm điều đó theo nhiều cách, tùy thuộc vào trường hợp. Chúng tôi sẽ xem xét từng người trong số họ tùy thuộc vào trường hợp của chúng tôi

Phương pháp đầu tiên. Lưu trữ ID trong một biến trong MySQL

Trong phương pháp này, chúng tôi sẽ lưu trữ ID được chèn cuối cùng của bảng đầu tiên trong một biến và sau đó sử dụng nó trong bảng thứ hai thay vì gọi trực tiếp

08

INSERT INTO cars (name)
VALUES ('BMW'),('Mercedes'),('Audi');
SELECT * FROM cars;
1

đầu ra

INSERT INTO cars (name)
VALUES ('BMW'),('Mercedes'),('Audi');
SELECT * FROM cars;
0

Chúng ta cần sử dụng dấu

last id : 4
62 trước khi chọn một biến

Phương pháp thứ hai. Truy xuất ID được chèn lần cuối từ bảng thứ hai trong MySQL

Đây là trường hợp đặc biệt cho ví dụ của chúng tôi vì chúng tôi đã sử dụng ID được chèn cuối cùng của bảng đầu tiên trong bảng thứ hai. Vì vậy, chúng tôi sẽ lấy nó từ bảng thứ hai

INSERT INTO cars (name)
VALUES ('BMW'),('Mercedes'),('Audi');
SELECT * FROM cars;
1

Nhận

last id : 4
63 từ bảng
63

Chúng ta đã học hàm

66 và có thể sử dụng nó trong ví dụ này

INSERT INTO cars (name)
VALUES ('BMW'),('Mercedes'),('Audi');
SELECT * FROM cars;
2

Tuy nhiên, các kỹ sư cao cấp không khuyến nghị phương pháp này vì nó có thể gây ra lỗi trong điều kiện cuộc đua. Tình trạng dồn đuổi xảy ra khi nhiều luồng có thể truy cập dữ liệu được chia sẻ đồng thời

Làm cách nào để kiểm tra id chèn cuối cùng trong MySQL?

Hàm LAST_INSERT_ID() trả về id AUTO_INCREMENT của hàng cuối cùng đã được chèn hoặc cập nhật trong bảng.

Làm cách nào để sử dụng LAST_INSERT_ID trong MySQL?

Hàm LAST_INSERT_ID() trả về số nguyên được tạo tự động đầu tiên ( BIGINT UNSIGNED ) được chèn thành công cho cột AUTO_INCREMENT . Nếu bạn chèn nhiều hàng vào bảng bằng một câu lệnh INSERT, thì hàm LAST_INSERT_ID() chỉ trả về giá trị được tạo tự động đầu tiên.

Làm cách nào tôi có thể xem bản ghi được chèn lần cuối trong SQL Server?

Xác định bản ghi được chèn lần cuối trong SQL Server .
CHỌN @@ IDENTITY. Nó trả về giá trị IDENTITY cuối cùng được tạo trên một kết nối, bất kể bảng tạo ra giá trị và phạm vi của câu lệnh tạo ra giá trị. .
CHỌN PHẠM VI_IDENTITY().
CHỌN IDENT_CURRENT('Tên bảng')

Làm cách nào để lấy ID hiện tại trong MySQL?

$id = intval($_GET['id']);