sql >> Databasteknik >  >> RDS >> Mysql

MySQL:återanvänd auto-inkrement under infogning

Ja. Som du upptäckte har id-värdet inte genererats ännu i en BEFORE INSERT-utlösare. Men du kan inte ändra ditt NEW.thread-värde i en AFTER INSERT-utlösare.

Du kan inte lita på att läsa INFORMATION_SCHEMA, eftersom du kan orsaka ett tävlingstillstånd.

Du behöver bara göra INSERT och sedan omedelbart köra:

UPDATE comments SET thread=id WHERE id=LAST_INSERT_ID() AND thread IS NULL;

Om det är en rotkommentar.

Se även mina tidigare svar om liknande ämne:



  1. 2 sätt att returnera en lista med triggers i en SQL Server-databas med T-SQL

  2. MySql-processlista fylld med sömnposter som leder till för många anslutningar?

  3. Flask-SQLAlchemy - När skapas och förstörs tabellerna/databaserna?

  4. En potentiell förbättring för statistikuppdateringar:MAXDOP