我們仍然在sql server 2005上。Sql server 2005和獨特的索引創建
我們正試圖在我們的病人表上創建一個唯一的索引。 唯一索引將是一個多列索引(狀態,患者編號,第一個,最後一個,DOB,性別)。 但是,數據已經包含多個重複項。
我們可以有2條記錄(Active,0001,John,Doe,1/1/1960,M)和(Active,0001,John,Doe,1/1/1960,M) 1必須被禁用。 我們也可以有2條記錄(Active,0001,John,Doe,1/1/1960,M)和(Active,0001,John,Doe,1/1/1960,M)必須爲2條記錄中的一條找到新的PatientNumber,以表明2名不同的患者恰好具有相同的姓名,DOB和性別。
由於有dups,用戶已經失去dups保持一個活的記錄。所以我們可以有3條記錄(Inactive,0001,John,Doe,1/1/1960,M)和(Inactive,0001,John,Doe,1/1/1960,M)和(Active,0001,John, Doe,1960年1月1日,M)。爲了創建唯一索引,必須刪除一個不活動的dup。
業務不包含修復現有的重複數據。
我們不希望使用函數來強制患者唯一性來檢查活動行。
我的計劃是根據以下考慮清理數據:如果數據中存在重複鍵值,則無法創建唯一索引,UNIQUE約束或PRIMARY KEY約束。
但是我們的dba表示在創建一個唯一索引時會有一個選項,可以讓您創建該索引並且不會抱怨現有的dups?毋庸贅言,聽到這種選擇後,這家公司非常高興。
例如:我計劃在2014年4月1日創建唯一索引。創建索引時,我可以使用一些「選項」來告訴sql server不打擾4/1/2014之前存在的重複項?索引創建後(即2014年4月1日以後),所有的dups都將違規。
我很難找到該選項。任何人都可以建議或評論?
謝謝!
我檢查了來自Microsoft的2005年的文檔CREATE INDEX,我找不到這樣的選項。有一個關於忽略重複鍵的選項,但這隻會影響INSERT語句而不會影響創建本身 –
謝謝Mojooo。我聽到你。我也沒有找到任何這樣的選擇。 dba回覆說它是IGNORE_DUP_KEY選項,但是當dup數據仍然存在時,這個選項確實無助於創建索引。 – Daisy
http://dba.stackexchange.com/questions/43823/can-i-add-a-unique-constraint-that-ignores-existing-violations –