Meine allgemeine Empfehlung als Plugin-Autor ist, dass Sie in einer Migration immer Indizes hinzufügen sollten, um die Einschränkung ordnungsgemäß durchzusetzen. Tatsächlich vermeiden die meisten Plugins, die wir heutzutage entwickeln, benutzerdefinierte Felder, es sei denn, sie sind absolut notwendig, und bevorzugen benutzerdefinierte Tabellen, die viel leichter zu verstehen sind. In diesem speziellen Fall benötigen Sie einen Index von:
create unique index idxStartEvent on topic_custom_fields(topic_id) where name = 'start_event'
Ich bin mir nicht sicher, was wir sonst noch im Core tun müssen. Wir haben eine Überarbeitung der benutzerdefinierten Felder in Betracht gezogen, sind jedoch etwas besorgt darüber. Eine Sache, die ich erwäge, ist, die Array-Unterstützung bei benutzerdefinierten Feldern einfach zu entfernen, da sie über die Jahre enorme Probleme verursacht haben.