sql >> Database >  >> RDS >> Mysql

MySQL:auto-increment opnieuw gebruiken tijdens invoegen

Ja. Zoals je hebt ontdekt, is de id-waarde nog niet gegenereerd in een BEFORE INSERT-trigger. Maar je kunt je NEW.thread-waarde niet wijzigen in een AFTER INSERT-trigger.

U kunt er niet op vertrouwen dat u de INFORMATION_SCHEMA leest, omdat u een raceconditie kunt veroorzaken.

Je hoeft alleen maar de INSERT te doen en dan onmiddellijk uit te voeren:

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

Als het een root-opmerking is.

Zie ook mijn eerdere antwoorden over hetzelfde onderwerp:



  1. MySQL:Tabel afkappen binnen transactie?

  2. Objectgeoriënteerde structuren in relationele databases

  3. Exacte betekenis van MySQL's Foreign Key 'on delete restrict' Clausule

  4. mysql:haal het aantal records tussen twee datum-tijd