sql >> Database >  >> RDS >> Mysql

tabelkolom bijwerken na invoegen nieuwe record met MySQL-triggers

De manier waarop u de waarde van een kolom probeert in te stellen, is een update. Omdat je het doet na het invoegen bewerking is voltooid.

Je hebt eigenlijk een before . nodig trekker.

En om dezelfde nieuwe automatisch verhoogde waarde van de primaire sleutelkolom van dezelfde tabel toe te wijzen, kunt u deze beter uit information_schema.tables halen. .

Voorbeeld :

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 ;

Opmerking :Zorg ervoor dat je geen voorgedefinieerde trigger met dezelfde naam en/of actie hebt. Als je er een hebt, laat ze dan vallen voordat je de nieuwe maakt.

Opmerkingen :
Volgens mysql-documentatie op last_insert_id() ,

vandaar, afhankelijk van last_insert_id() en auto_increment veldwaarden in batch-inserts lijken niet betrouwbaar.



  1. postgresql thread safety voor tijdelijke tabellen

  2. Hoe weet ik of MySQLnd het actieve stuurprogramma is?

  3. een betere aanpak dan het opslaan van mysql-wachtwoord in platte tekst in het configuratiebestand?

  4. Hoe het numerieke deel van een string te krijgen met behulp van T-SQL?