我有表A.這個表沒有任何PK,它只是存儲大量的行,只能通過組合列值來識別。 有一個程序從表A中取數據,從其他表中進行適當的匹配/處理並提供表B. 現在,如何檢查表A中的數據是否正確插入到表B中?
這是sql server 2000所以EXCEPT不是一個解決方案。在t-sql(sql server2000)的另一個表中搜索數據?
也許一些過程,將包括:
- 光標將取從 表A中的行,
- 做第B選擇(與適當的 列匹配)
- ,然後,如果匹配的行已 找到(選擇返回一些數據) 增加計數器(正確數量 傳播行)
- 如果找不到匹配的行將 數據,我們正在尋找到 臨時表(供日後查看)
更新: 過程,飼料表B中並沒有把所有的行從表一表進C.此外還從其他表中獲取數據(我們稱之爲C)並將其放入B(但不是所有行)。我認爲可能使用一個遊標來檢查B的A數據,然後使用其他遊標來檢查B的C數據將是一個很好的解決方案。
更新後:雖然我不排除有些情況需要使用遊標,但這些情況很少見,而且這當然不是其中之一。必須有一些標準可以讓你知道爲什麼A中的行確實或沒有達到B.你可以修改下面的答案中的任何一個來確定哪些行應該在B中但是沒有實現它。 –
爲什麼你沒有在每張桌子上PK?如果你有組合鍵,你至少應該有一個代理PK和一個定義記錄的值組合的唯一索引。如果表A僅僅是一個臨時表,並且只用於在移動到表b之前存儲清理數據,那麼也許你可以在沒有唯一索引的情況下離開(也許你還沒有清理數據以使其唯一),但是我甚至在這些表上也放了一張PK,因爲它能夠唯一地識別一條記錄是非常有用的。 – HLGEM
表A和C是數據庫中其他表格彙總的表格。表B是用於生成報告的視圖的基表。這就是它的設計,而不是我的決定,我無法改變它。我只需要與它鬥爭。 – yoosiba