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:
- Een tekenreeks en een primaire sleutel-ID samenvoegen tijdens het invoegen
- Twee kolommen voor automatisch verhogen of automatisch verhogen en dezelfde waarde in andere kolom