我这里有4个表,我正在尝试使用linq在另一个表中添加新行时更新最后一个输入行
CustomerTable的:
CustomerId Name EmailId
-------------------------
1 Paul r@r.com
2 John J@j.com
在下表中,我为每个LoyatyType分配点
LoyaltyPointTable :
LoyaltyPointsId LoyaltyType Points
---------------------------------------
1 Registration 10
2 Loginstatus 1
3 Downloading 10
4 Redemming 1
5 Sharing 20
6 Refer 10
LoyaltyDetailsTable :
LoyaltyDetailsId LoyaltyPointsId CustomerId Dates
-------------------------------------------------
1 1 1 2015-01-22
2 2 1 2015-01-22
3 3 2 2015-01-22
4 3 1 2015-01-22
5 4 1 2015-01-22
6 4 1 2015-01-24
7 2 1 2015-01-24 // here one new row is added based on LoginStatus
他已经完成了一次登录,所以他的LoginStatus Point现在为1我希望在下面的另一个表中更新这一点
预期输出:
PriceClaimTable
PriceClaimId CustomerId PriceId Current Points
1 2 22 150
2 1 23 200 // here update the last row of CustomerId as 231
//based on every new entry on LoyaltyDetailsTable
说他是否再次登录200 + 1 = 201
然后他正在下载201 + 10 = 211
然后他确实分享了211 + 20 = 231
我可以在Linq中使用sql触发器并为此找到解决方案吗?
答案 0 :(得分:1)
使用可以使用triggers
来完成这项工作。您可以查看this来写一个。
答案 1 :(得分:1)
如何在加入LoyaltyPointTable的LoyaltyDetailsTable上创建一个视图,该视图将LoyaltyPointTable.Points与每个客户相加,例如:类似的东西(取决于你的SQL方言)
CREATE VIEW PriceClaimView
AS
SELECT CustomerId, SUM(LPT.Points) AS CurrentPoints
FROM LoyaltyDetailsTable LDT INNER JOIN LoyaltyPointTable LPT ON LDT.LoyaltyPointsId = LPT.LoyaltyPointsId
GROUP BY CustomerId
答案 2 :(得分:1)
1,在您的数据引擎
你可以使用触发器
2,你的程序
你可以编写一种机制。
通常trihger伤害表现,我会使用计划B