sql >> Databáze >  >> RDS >> Mysql

aktualizovat sloupec tabulky po vložení nového záznamu pomocí spouštěčů MySQL

Způsob, jakým se pokoušíte nastavit hodnotu sloupci, je aktualizace. Protože to děláte po vložení operace je dokončena.

Ve skutečnosti potřebujete before spoušť.

A chcete-li přiřadit stejnou novou automaticky inkrementovanou hodnotu sloupci primárního klíče stejné tabulky, měli byste ji získat z information_schema.tables .

Příklad :

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 ;

Poznámka :Ujistěte se, že nemáte žádné předdefinované spouštěče se stejným názvem a/nebo akcí. Pokud nějaké máte, před vytvořením nového je vypusťte.

Pozorování :
Podle dokumentaci mysql na last_insert_id() ,

tedy v závislosti na last_insert_id() a auto_increment hodnoty polí v dávkových vložkách se nezdají být spolehlivé.



  1. Denormalizace:Kdy, proč a jak

  2. Plynulé NHibernate DuplicateMappingException s automatickým mapováním

  3. Jak vybrat pomocí klauzule WITH RECURSIVE

  4. Jak AUTO aktualizovat MySQL po vypršení platnosti pole časového razítka