我需要知道方法,我们必须防止在没有主要约束的表中重复记录。
场景:
存在两个数据库, 一个是集中的 另一个是用于现场项目生产的领域。
我们的项目用于支付工资。为此,第三方组织将员工工资数据推送到集中式数据库中。
我们在数据库中迁移了相同的副本,您可以将其视为完全相同的副本。 迁移后,我们会验证双方的记录。
如果第三方推送了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:
如何为该表创建唯一索引?