我有两个表,如customer_name和customer_phone,但唯一的客户是通过其中两个表的所有四列的组合来识别的。
由于我们有多个souce系统同时插入下表,因此在所有这些作业中,我们在插入之前使用一个函数进行验证,该函数使用(f_name、l_name、area_code、phone_num)这种组合来检查客户是否已经存在。然而,我们仍然会看到重复项被插入,因为验证发生在其他作业已经插入但尚未提交的时候。有没有避免重复的解决方案?
客户名称
列:ID、名字、姓氏
cutomer_phone
col:ID,area_code,Phone_number
是。不要在应用程序中进行检查。让数据库通过使用唯一的索引/约束来进行检查。如果我必须猜测你想要的约束条件:
create unique index idx_customer_name_2 on customer_name(first_name, last_name);
create unique index idx_customer_phone_2 on customer_phone(customer_id, phone_number);
然后数据库将进行检查,您不必担心重复——尽管您应该检查插入时的错误。