簡體   English   中英

將數據從一個表分發到SQL Server中的多個表

[英]distributing data from one table to multiple tables in sql server

我有3張桌子:

Item_Detail ----------------- ID,名稱

ItemPurchased_Detail --- QtyPurchased,RateOfPurchase,DiscountReceived

ItemSold_Detail ----------- QtySold,銷售率,DiscountGiven

另外,我有一個主表,ITEM_FULL_DETAIL,其中包含來自上述3個表的所有列。

我有一個winform應用程序,具有一個包含所有文本框的表單,用於在ITEM_FULL_DETAIL表中插入數據。 用戶將輸入所有數據,然后單擊“提交”按鈕

我想先在主表中插入數據,然后將數據分別分配到所有3個表中。 為此,我應該使用什么? 例如觸發器,過程,視圖或聯接?

另外,我正在使用ITEM_FULL_DETAIL表,因為我想保護我的實際表不受任何數據丟失的影響,例如斷電的情況。

我應該使用臨時表代替ITEM_FULL_DETAIL表,還是僅使用當前表就可以了?

還有其他辦法嗎?

您可以使用數據庫觸發器或在應用程序級別插入所有記錄。

您可能應該重新考慮設計:在不同的表中復制相同的數據通常是一個壞主意。 在這種情況下,您可以將ITEM_FULL_DETAIL替換為視圖,然后將數據保留在基礎表中。 這樣,您只有一個數據副本,因此您不必擔心表之間的不一致。

如果這樣做,則可以按正確的順序將新數據插入3個基礎表中(可能是最好的主意),也可以在ITEM_FULL_DETAIL視圖上使用INSTEAD OF觸發器(更為復雜)。 可以使用ORM,ADO.NET,存儲過程或最適合您的應用程序設計的任何方式來完成INSERT。

如果確實有重復數據的理由,那么可以共享它會很有幫助,因為有人可能會對這種情況有更好的建議。

另外,我正在使用ITEM_FULL_DETAIL表,因為我想保護我的實際表不受任何數據丟失的影響,例如斷電的情況。

..什么? 您如何保護自己的餐桌? 您想防止什么? 如果您擔心的是數據完整性,則絕對不需要ITEM_FULL_DETAIL表。 您可能正在創建一種情況,其中使用此中間表可能會損害數據完整性。

您知道交易嗎? 使用它們。 如果寫入三分之二的表,則客戶端的電源將關閉並且無法完成第三次寫入,事務將失敗並且部分數據將被回滾。

除非我完全不了解這里的要點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM