Sì. Come hai scoperto, il valore id non è stato ancora generato in un trigger BEFORE INSERT. Ma non puoi modificare il tuo valore NEW.thread in un trigger AFTER INSERT.
Non puoi fare affidamento sulla lettura di INFORMATION_SCHEMA, perché puoi causare una condizione di gara.
Dovrai solo fare INSERT, quindi eseguire immediatamente:
UPDATE comments SET thread=id WHERE id=LAST_INSERT_ID() AND thread IS NULL;
Se è un commento radice.
Vedi anche le mie risposte passate sull'argomento simile:
- Concatenazione di una stringa e dell'ID della chiave primaria durante l'inserimento
- Due colonne di incremento automatico o incremento automatico e stesso valore in un'altra colonna