Mysql
 sql >> Baza danych >  >> RDS >> Mysql

zaktualizuj kolumnę tabeli po wstawieniu nowego rekordu za pomocą wyzwalaczy MySQL

Sposób, w jaki próbujesz ustawić wartość kolumny, to aktualizacja. Ponieważ robisz to po wstawieniu operacja została zakończona.

Właściwie potrzebujesz before cyngiel.

Aby przypisać tę samą nową automatycznie zwiększaną wartość kolumny klucza podstawowego tej samej tabeli, lepiej pobierz ją z information_schema.tables .

Przykład :

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 ;

Uwaga :Upewnij się, że nie masz żadnego predefiniowanego wyzwalacza o tej samej nazwie i/lub akcji.Jeśli masz jakieś, usuń je przed utworzeniem nowego.

Obserwacje :
Zgodnie z Dokumentacja mysql dotycząca last_insert_id() ,

stąd, w zależności od last_insert_id() i auto_increment wartości pól we wstawkach wsadowych wydają się nie być wiarygodne.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak dobrze wykorzystujesz wielordzeniowe procesory w swoich aplikacjach PHP/MySQL?

  2. Jak zsynchronizować bazę danych deweloperskich i produkcyjnych

  3. sprawdź dostępność pokoju z SQL

  4. przesyłanie plików php, jak ograniczyć typ przesyłania plików

  5. GeoDjango i MySQL:punkty nie mogą być NULL, jakiej innej pustej wartości powinienem użyć?