sql >> Databasteknik >  >> RDS >> Mysql

MySQL-utlösare före infoga uppdateringskolumn med nytt auto-inkrement-id

AUTO_INCREMENT kolumnen ställs bara in efter Föra in.

Om du behöver åtkomst det värdet kan du bara i en AFTER INSERT utlösare. Du kan dock inte ändra ett kolumnvärde i en AFTER UPDATE utlösa...

Dessutom kan du inte utföra en uppdatering av tabellen som används i din AFTER INSERT trigger som (http://dev.mysql. com/doc/refman/5.0/en/stored-program-restrictions.html ):

Här skulle den enda rimliga lösningen vara att skapa en lagrad procedur för att uppdatera tabellen, justera de relevanta kolumnerna i en transaktion för att "emulera" din atominsättningssats.

Som sagt, i ditt specifika fall , key kolumnen är redundant eftersom den kolumnen bara är sammanlänkningen av två andra kolumner i samma rad.

Med tanke på dess namn, letar du inte efter ett sätt att skapa en sammansatt nyckel istället? Något sådant:

ALTER TABLE tbl ADD UNIQUE KEY (countryCode, id);



  1. Hur man använder regexp i sqlite

  2. com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:Inga operationer tillåtna efter att anslutningen stängts

  3. PHP PDO hur kör man en begäran om flera frågor?

  4. Hur man konverterar en sträng till ett datum/tid i SQL Server med CONVERT()