Cách bạn đang cố gắng đặt giá trị cho một cột là một bản cập nhật. Bởi vì bạn đang làm điều đó sau khi chèn hoạt động đã hoàn thành.
Bạn thực sự cần một before
cò súng.
Và để gán cùng một giá trị tăng tự động mới cho cột khóa chính của cùng một bảng, bạn nên lấy nó từ information_schema.tables
.
Ví dụ :
delimiter //
drop trigger if exists bi_table_name //
create trigger bi_table_name before insert on table_name
for each row begin
set @auto_id := ( SELECT AUTO_INCREMENT
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME='table_name'
AND TABLE_SCHEMA=DATABASE() );
set new.priority= @auto_id;
end;
//
delimiter ;
Lưu ý :Đảm bảo rằng bạn không có bất kỳ trình kích hoạt được xác định trước nào có cùng tên và / hoặc hành động. Nếu có, hãy loại bỏ chúng trước khi tạo mới.
Quan sát :
Theo tài liệu mysql về last_insert_id ()
,
do đó, tùy thuộc vào last_insert_id()
và auto_increment
giá trị trường trong chèn hàng loạt có vẻ không đáng tin cậy.