La mia raccomandazione generale qui è che, in qualità di autore di plugin, dovresti sempre aggiungere indici in una migrazione per imporre correttamente il vincolo. In effetti, la maggior parte dei plugin che scriviamo oggi evita i campi personalizzati a meno che non siano assolutamente necessari e preferisce l’uso di tabelle personalizzate, che sono molto più semplici da gestire. In questo caso specifico, desideri un indice del tipo:
create unique index idxStartEvent on topic_custom_fields(topic_id) where name = 'start_event'
Non sono sicuro di cosa altro sia necessario fare nel core qui; abbiamo considerato un aggiornamento dei campi personalizzati, ma siamo un po’ preoccupati al riguardo. Una cosa che sto prendendo in considerazione è semplicemente eliminare il supporto per gli array dai campi personalizzati, poiché negli anni hanno causato un’enorme quantità di problemi.