我創建插入觸發器後另一表後,其工作正常,但我必須在執行觸發器中的語句之前一定條件下基於不同客戶ID運行觸發SQL觸發器INSERT,UPDATE與條件
- ,我想檢查哪個CustomerId插入到我的LoyaltyDetailsTable中,比如說最後一個插入 是Customerid = 2,然後在該條件下傳遞該Customerid,然後運行 觸發器,或者如果Customerid = 1,則運行該觸發器, 等等。
- 我想檢查是否在PriceClaimTable中插入的CustomerId是否存在,如果存在則更新其他細節,只需在LoyaltyDetailsTable中插入 值。
觸發查詢
CREATE TRIGGER DetailsAfterInsert ON [dbo].[LoyaltyDetailsTable]
FOR INSERT
as
UPDATE PriceClaimTable
SET CurrentPoints =
(
(SELECT SUM(LoayaltyPointsTable.Points) AS RecentPoints FROM LoayaltyPointsTable
join LoyaltyDetailsTable ON LoayaltyPointsTable.LoyaltyPointsId
= LoyaltyDetailsTable.LoyaltyPointsId
WHERE CustomerId=1 and LoyaltyDetailsId= (SELECT MAX(LoyaltyDetailsId)
AS LoyaltyDetailsTable FROM LoyaltyDetailsTable))
+
(SELECT CurrentPoints FROM PriceClaimTable WHERE ClaimCustomerId=1 and
PriceClaimId=(SELECT max(PriceClaimId) FROM PriceClaimTable
))
)
WHERE ClaimCustomerId=1 and PriceClaimId=(SELECT max(PriceClaimId) FROM PriceClaimTable)
這是寫一個觸發我的第一次嘗試,並here是表結構。
任何幫助將是偉大的。
? – 2015-02-11 15:08:37
兩件事。首先你的觸發器沒有引用插入的虛擬表。其次,這似乎是一個計算列將比觸發更有意義。當你嘗試保持這樣的平衡時,你永遠不會有準確的數據。在某個時候它會失去同步。 – 2015-02-11 15:10:24