這是我第一次在這裏問一個問題,我已經得到了許多答案,只是瀏覽我的問題 - 儘管如此,謝謝大家,但這次我被卡住了。SQL Server - 更新底層表記錄來自查看AFTER INSERT
我大部分都是SQL新手,所以對我很感興趣,我也在使用不是由我設計的SQL Server 2008 R2數據庫,我只是試圖從其它數據中獲取數據,我也使用SQL Server管理工作室(SSMS)。
SETUP:有許多表,但在這種情況下,我正在使用一個主要特定的Items
表和其他5個「連接」表以及從這些表創建的視圖。然後,我使用我熟悉的MS Access中的視圖,我在主表中添加了一些新列,其中一個我想根據主表的值存儲特定Item
的計算MachineRate
(相同記錄)和其他表格。我能夠在視圖上完成所有這一切。
但我的問題是這樣的:是否有可能將此計算值用作主表的默認值,還是使用觸發器在其中觸發?
我已經嘗試函數和觸發器,並開始懷疑這是行不通的,並且如前所述視圖基於我想要插入值的表。
對於離(這只是部分):主表有以下幾列...
RecID, PartRef, Material, Width, Length, Thickness, MachRate etc
而且MachineRate
表
RecID, Rate
而且TableOfTech
表
RecID, Material, Thickness1, Thickness2, AddToMachRate etc...
那些我的計算值需要5個表中的3個,主表的MachRate
值需要(價格從MachineRate + AddToMachRate從TableOfTech),其中TableOfTech.Material = MainTable.Material和TableOfTech.Thickness1和Thickness2
不知道有多少除權:確實有幫助,但給ü一個想法我正在處理,所以它真的工作插入到表格列中只有插入的新記錄...基於同一個表中的視圖值?
我更好地解釋了爲什麼我想這樣做....在這種情況下,用戶有必要能夠更改該值,但大多數情況下,默認值是可以的,我們正在使用它此刻
我希望這對你們有意義,我期待着任何幫助!
S.布魯貝克
*您可能*在視圖中創建INSTEAD OF INSERT'的'扳機,因此,如果在該視圖的'INSERT'發生時,你得到的「通知」,然後你可以決定如何處理這些值插入辦該視圖 - 如何將它們存儲到底層表中 –
marc,感謝您的回覆 - 我已經使用了替代插入觸發器,但我在表格字段中獲取了默認值,我在列上設置了默認值因爲它不允許空值,只是在測試時,請參閱下面 ALTER TRIGGER [DBO]。[trg_PopMachRateSQL] ON dbo.Qry_AllParts2 INSTEAD OF INSERT AS BEGIN UPDATE dbo.PPRR_PPRR_00000100 SET dbo.PPRR_PPRR_00000100.MachRateSQL = UseRat e FROM插入的AS i WHERE dbo.PPRR_PPRR_00000100.RecID = i.RecID END –
穆罕默德阿里 不確定我是否在正確的位置張貼/回覆...? 我知道你在說什麼,但我想要的是確保值永遠不會改變,除非我在Access中運行更新查詢,換句話說,如果我曾經將其中的一個數據更改爲2個有數據的表對於計算列我想彈出一個消息框,詢問是否需要根據我的機器速率更改來更新主項記錄 也許我沒有想過所有的東西? –