2012-08-13 100 views
0

我有Database1和Database2,我將它們中的每一個添加到數據表對象。 現在Database1通過Access進行更改,記錄可能已添加刪除或行數據可能會更改。 所以數據庫看起來vb.net比較2數據庫

+----+----------+-------+-------+ 
| ID | Name | Price | Sales | 
+----+----------+-------+-------+ 
| 1 | ProductA | 453 | 55 | 
| 2 | ProductB | 43 | 156 | 
| 3 | ProductC | 22 | 161 | 
+----+----------+-------+-------+ 

所以如果我刪除我希望它在第二的Database2 如果我增加新的產品與ID = 4要刪除的產品ID = 1的行我希望它被添加到Database2,如果我更改價格或銷售額,我希望它在Database2中更改該記錄。

現在問題是數據庫記錄在兩個數據庫中的順序都不相同,因此循環可能需要很長時間..例如,如果刪除了ID = 4000,則比我要遍歷整個數據庫以找到此出。

因此,除了很多循環之外,還有其他解決方案嗎?

+0

你在使用什麼類型的數據庫(SQL,MySql,Access,Oracle等)?您可能需要考慮將觸發器添加到數據庫。例如,向Database1添加一條記錄後觸發一個觸發器,然後將相同的數據添加到Database2。 – rag9 2012-08-13 13:25:13

+0

訪問數據庫.mdb – user1570048 2012-08-13 13:25:58

+0

行的唯一標識符是什麼? – StingyJack 2012-08-13 13:31:33

回答

1

它可以指到另一個數據庫SQL運行對一個MS Access連接:

SELECT t1.*, t2.* FROM Table1 t1 
INNER JOIN [;DATABASE=Z:\Docs\Test.accdb].Table1 t2 
ON t1.ID=t2.ID 

從這裏,它是很容易創建查詢找到丟失或更改的記錄。

+0

如果數據庫2有額外的列在Database1中不存在,這項工作將會如何工作? – user1570048 2012-08-13 13:27:14

+0

只要他們有一個共同的字段,即ID = 1,就可以匹配具有不同列的表格,即指向兩個表格中的同一行(字段)。 – Fionnuala 2012-08-13 13:30:25

1

如果ID是行的標識符,那麼我認爲你不能安全地做你正在問的東西。

鑑於上述表1

+----+----------+-------+-------+ 
| ID | Name | Price | Sales | 
+----+----------+-------+-------+ 
| 1 | ProductA | 453 | 55 | 
| 2 | ProductB | 43 | 156 | 
| 3 | ProductC | 22 | 161 | 
+----+----------+-------+-------+ 

而從表2模擬無序條件表2

+----+----------+-------+-------+ 
| ID | Name | Price | Sales | 
+----+----------+-------+-------+ 
| 1 | ProductB | 43 | 156 | 
| 2 | ProductA | 453 | 55 | 
| 3 | ProductC | 22 | 161 | 
+----+----------+-------+-------+ 

如果刪除ID 2,則最終會刪除產品的例子表1中的B(不是產品A)。我不認爲這是你想要的。

您確定ID是這些值的主鍵嗎?