Начинът, по който се опитвате да зададете стойност на колона, е актуализация. Защото го правите след вмъкване операцията е завършена.
Всъщност имате нужда от before
задействане.
И за да зададете същата нова автоматично увеличена стойност на колоната с първичен ключ на същата таблица, по-добре я вземете от information_schema.tables
.
Пример :
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 ;
Забележка :Уверете се, че нямате предварително дефинирани тригери със същото име и/или действие. Ако имате такива, пуснете ги, преди да създадете новия.
Наблюдения :
Съгласно mysql документация за last_insert_id()
,
следователно, в зависимост от last_insert_id()
и auto_increment
стойностите на полета в пакетните вмъквания не изглеждат надеждни.