列に値を設定しようとしている方法は更新です。 挿入後に実行しているため 操作が完了しました。
実際には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 ;
注 :同じ名前やアクションの事前定義されたトリガーがないことを確認してください。トリガーがある場合は、新しいトリガーを作成する前にドロップしてください。
観察 :
last_insert_id()に関するmysqlのドキュメント
、
したがって、last_insert_id()
によって異なります およびauto_increment
バッチ挿入のフィールド値は信頼できないようです。