Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

(mysql, php) Làm cách nào để lấy giá trị trường auto_increment trước khi chèn dữ liệu?

Giá trị autoincrement được tạo bởi chính cơ sở dữ liệu, khi việc chèn được thực hiện xong; có nghĩa là bạn không thể lấy nó trước khi thực hiện truy vấn chèn thực sự.

Giải pháp bạn đề xuất không phải là giải pháp thường được sử dụng - đó sẽ là:

  • chèn một số dữ liệu còn trống
  • nhận giá trị tự động tăng thêm đã được tạo
  • thực hiện các phép tính của bạn, sử dụng giá trị tự động tăng thêm đó
  • cập nhật hàng để đưa dữ liệu mới / đầy đủ vào vị trí - bằng cách sử dụng tự động tăng thêm được tạo trước đó trong where mệnh đề của update để xác định hàng nào đang được cập nhật.

Tất nhiên, như một biện pháp phòng ngừa bảo mật, tất cả các hoạt động này phải được thực hiện trong một giao dịch (để đảm bảo hành vi "tất cả hoặc không có gì")


Dưới dạng mã giả:

begin transaction
insert into your table (half empty values);
$id = get last autoincrement id
do calculations
update set data = full data where id = $id
commit transaction


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để loại bỏ khoảng trắng đầu và cuối trong MySQL

  2. Các lựa chọn thay thế MySQL Workbench - GUI Point-and-Click của ClusterControl

  3. Làm cách nào để bạn đặt giá trị mặc định cho cột Ngày giờ trong MySQL?

  4. thêm cột vào bảng mysql nếu nó không tồn tại

  5. Cách tạo và xóa cơ sở dữ liệu và bảng trong MySQL