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ủaupdate
để 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