Cách lấy ID tăng tự động khi thực hiện lệnh INSERT trong MySQL

Thông thường các bảng dữ liệu bạn thường để khóa chính tự động tăng, điều này đôi lúc gặp bất tiện thi bạn cần lấy khóa chính vừa INSERT xong để thực hiện các công việc tiếp theo. Vậy hôm nay mình sẽ hướng dẫn cách lấy ID tăng tự động khi INSERT trong MySQL.

Trong MySQL để tạo khóa chính tăng tự động thì bạn sử dụng  AUTO_INCREMENT để khai báo cho  Primary Key. Thuộc tính AUTO_INCREMENT chỉ thiết lập được cho kiểu dữ liệu là INT và mỗi bảng chỉ được một trường duy nhất cài đặt thuộc tính  AUTO_INCREMENT

Khi thêm dữ liệu vào bảng thì trường ID do cài đặt thuộc tính AUTO_INCREMENT nên sẽ tự động sinh ra, nhưng bây giờ làm thế nào để có thể lấy ID tăng tự động khi INSERT trong MySQL khi bạn muốn sử dụng khóa chính này để thực hiện các lệnh tiếp theo.

Muốn lấy ID tăng tự động khi thực hiện lệnh INSERT trong MySQL thì bạn khai báo thêm thuộc tính  Statement.RETURN_GENERATED_KEYS khi tạo mới đối tượng  prepareStatement() như sau:

Sử dụng đối tượng ResultSet để có thể lấy ID tăng tự động khi INSERT trong MySQL như sau:

Để giúp bạn hiểu rõ hơn mình sẽ làm một ví dụ có 2 bảng category gồm các trường caterory_id và category_name và một bảng product gồm product_id, product_name và  caterory_id

Cả 2 bảng  category và product  đều có khóa chính tự động tăng, vậy nên khi thêm bảng category mình muốn lấy lại ID vừa thêm để có thể thêm vào bảng product.

Đầu tiên, bạn viết phương thức  createCategory(Category category) để thêm dữ liệu vào bảng category, hàm trả về kiểu  int là khóa chính vừa thêm.

Tiếp theo, viết phương thức  createProduct(Product product) để thêm dữ liệu vào bảng product

Cuối cùng, viết lớp main() để chạy chương trình trên:

Lời kết: Tóm lại để lấy ID tăng tự động khi INSERT trong MySQL thì bạn cần phải khai báo  PreparedStatement.RETURN_GENERATED_KEYS và gọi phương thức  getGeneratedKeys() trong  ResultSet

(Tác giả: Tùng Dương)

Bình luận

Loading...