Мне нужно знать, как мы должны предотвратить дублирование записей в таблице, в которой не было первичного ограничения.
СЦЕНАРИЙ:
Существуют две базы данных,
один централизован
Другой находится в домене, используемом в качестве продукции для живого проекта.
Наш проект используется для выплаты заработной платы. Для этого сторонняя организация поместила данные о зарплате сотрудников в централизованную базу данных.
Мы переносим то же самое в нашу базу данных, вы можете считать точную копию.
после миграции мы проверяем записи с обеих сторон.
Если 2000 записей выдвинуто третьей стороной, то на нашей стороне должно присутствовать ровно 2000 записей.
Проблема в том, что понятия первичного ключа не существует ни на централизованной, ни на нашей стороне.
Формат данных показан ниже
SALARY_REPORT_ID EMP_NAME EMP_CODE PAY_CODE PAY_CODE_NAME AMOUNT PAY_MODE PAY_CODE_DESC YYYYMM REMARK EMP_ID PRAN_NUMBER PF_NUMBER PRAN_NO ATTOFF_EMPCODE REFERENCE_ID
13488158 Mr. Javed Jafri 91559037 104 7427 1 HOUSE RENT ALLOW 201802 119 22782303 150025 1-268
13488159 Mr. Javed Jafri 91559037 100 23885 3 BASIC PAY 201802 119 22782303 150025 1-268
13488160 Mr. Javed Jafri 91559037 103 9590 1 DEARNESS ALLOW. 201802 119 22782303 150025 1-268
13488161 Mr. Javed Jafri 91559037 100 191800 1 BASIC PAY 201802 119 22782303 150025 1-268
13488162 Mr. Javed Jafri 91559037 303 40000 2 PF SUB-PAY(GPF) 201802 119 22782303 150025 1-268
13488163 Mr. Javed Jafri 91559037 502 20 2 G.T.I.S. 201802 119 22782303 150025 1-268
13488164 Mr. Javed Jafri 91559037 503 72 2 SCLIS 201802 119 22782303 150025 1-268
13488165 Mr. Javed Jafri 91559037 999 69441 1 NET EARNING 201802 119 22782303 150025 1-268
13488166 Mr. Javed Jafri 91559037 998 195692 2 GROSS DEDUCTION 201802 119 22782303 150025 1-268
13488167 Mr. Javed Jafri 91559037 997 265133 1 GROSS EARNING 201802 119 22782303 150025 1-268
13488168 Mr. Javed Jafri 91559037 134 16006 3 WAGE REVISION ARREARS 201802 119 22782303 150025 1-268
13488169 Mr. Javed Jafri 91559037 108 400 1 CONVEYANCE ALLOWANCE 201802 119 22782303 150025 1-268
13488170 Mr. Javed Jafri 91559037 134 16025 3 WAGE REVISION ARREARS 201802 119 22782303 150025 1-268
13488171 Mr. Javed Jafri 91559037 506 600 2 GSLI(Board Employee) 201802 119 22782303 150025 1-268
13488172 Mr. Javed Jafri 91559037 312 155000 2 INCOME TAX 201802 119 22782303 150025 1-268
Как показано выше в наборе данных, один сотрудник связан со многими оценками и суммой.
Теперь каждый месяц нам нужно переносить точные данные в нашу базу данных.
В прошлом месяце данные будут продублированы на нашей стороне.
Это означает, что в сторонних БД запись была 2000, после миграции мы обнаружили, что это 4000, или тройной случай также i, e 6000.
Это произойдет, потому что в таблице нет ограничений и проверок. Я хочу избежать дублирования, но мы не можем использовать первичный ключ, потому что каждый сотрудник связан со многими оценками.
Мне предложили создать уникальный индекс путем объединения двух или более столбцов, но после попытки я получил ошибку
CREATE UNIQUE INDEX SDR ON SALARY_DETAIL_REPORT_042018(EMP_CODE,PAY_CODE);
Error starting at line : 11 in command -
CREATE UNIQUE INDEX SDR ON SALARY_DETAIL_REPORT_042018(EMP_CODE,PAY_CODE)
Error report -
SQL Error: ORA-01452: cannot CREATE UNIQUE INDEX; duplicate keys found
01452. 00000 - "cannot CREATE UNIQUE INDEX; duplicate keys found"
*Cause:
*Action:
Как мне создать уникальный индекс для этой таблицы?