-- Delete the empty ap_ids delete from activity where ap_id is null; -- Make it required alter table activity alter column ap_id set not null; -- Delete dupes, keeping the first one delete from activity a using ( select min(id) as id, ap_id from activity group by ap_id having count(*) > 1 ) b where a.ap_id = b.ap_id and a.id <> b.id; -- The index create unique index idx_activity_ap_id on activity(ap_id); -- Drop the old index drop index idx_activity_unique_apid;