-- Abort migration if duplicates exist (must be manually resolved first)
DO$$
DECLARE
duplicate_valueTEXT;
duplicate_countINTEGER;
BEGIN
SELECTeconomic_customer_number,COUNT(*)::INTEGER
INTOduplicate_value,duplicate_count
FROMcustomers
WHEREeconomic_customer_numberISNOTNULL
GROUPBYeconomic_customer_number
HAVINGCOUNT(*)>1
ORDERBYCOUNT(*)DESC,economic_customer_number
LIMIT1;
IFduplicate_valueISNOTNULLTHEN
RAISEEXCEPTION'Cannot create unique index on customers.economic_customer_number. Duplicate value: % (count=%). Resolve duplicates and rerun migration.',duplicate_value,duplicate_count;