Mysql
 sql >> база данни >  >> RDS >> Mysql

актуализира колоната на таблицата след вмъкване на нов запис с помощта на MySQL тригери

Начинът, по който се опитвате да зададете стойност на колона, е актуализация. Защото го правите след вмъкване операцията е завършена.

Всъщност имате нужда от 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 стойностите на полета в пакетните вмъквания не изглеждат надеждни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какви са оптималните размери на varchar за MySQL?

  2. Как да намерите местоположението на базата данни на MySQL на вашия твърд диск?

  3. SQL заявка с MySQL

  4. Групирайте редовете с помощта на клауза Group By в MySQL

  5. Съхраняването на файлове с изображения в базата данни Mongo, добра идея ли е?