[英]How to Troubleshoot composite key violation in MS Access
我的Access數據庫(2007)有四個表; 客戶,供應商,帳戶和帳戶年齡
AccountAgeing具有由其他兩個表的外鍵以及日期組成的復合鍵。 即
AsAtDate,供應商ID,帳號
我正在通過臨時表從excel導入數據,而我的父表(客戶,供應商,客戶)也能很好地導入。
但是,從我的tempTable連續導入AccountAgeing有一個關鍵沖突。 在749種可能的進口產品中,有746項違反了密鑰。 要測試的查詢是:
SELECT DISTINCT tempTable.[SupplierID], #31/7/14#, tempTable.[AccountNumber]
FROM tempTable;
這返回了749條記錄(所有記錄)。 如果是這種情況,我該怎么辦?
復合鍵字段均已建立索引,並且重復OK。 目標表中沒有數據 我已為日期和[帳號]編制了索引,因為這些是將在其中進行搜索的字段。
這是您可以嘗試的一些故障排除步驟的序列。
這些步驟將使您獲得一些見識。 只是一個猜測-但聽起來您某處的數據類型可能不匹配。 在這種情況下,Access有時會即時轉換數據並將其插入而不會給出錯誤。 但是在此過程中,數據的性質發生了變化,從而導致目標表中的鍵沖突。
我很想知道您的發現。 找出問題所在時,請發表評論。
希望能幫助到你。 排除故障,祝您好運。
謝謝你馬蒂! 我嘗試手動填充,這是錯誤的,因為在客戶表中沒有匹配的記錄。
我發現我錯誤地將AccountAgeing分配為客戶而不是客戶的父級。
業務邏輯是AccountAgeing記錄將始終具有一個Account,但是AccountAgeing記錄並不總是提及公司編號(Customer表的主鍵)。
該修復程序將Account Aging組合鍵的一部分綁定到Accounts組合鍵。
我不確定添加具有帳號但沒有公司號的ATBRecord時會發生什么,但這是另一個問題
檢查表屬性中的索引屬性-確保在任何組合鍵字段上都未將其設置為“重復”,然后單擊“確定”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.