我需要知道方法,我们必须防止在没有主要约束的表中重复记录。
场景:
存在两个数据库,一个是集中式的另一个是在域中用作实时项目的生产。
我们的项目用于支付薪资。为此,第三方组织将员工薪资数据推送到集中式数据库中。
我们在数据库中迁移它们,你可以认为是一个精确的副本。迁移后,我们验证双方的记录。
如果由第三方推动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,或三重情况也是我,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:
如何为此表创建唯一索引?