![](/img/trans.png)
[英]update a column in a sql table with a value from another table based on a relationship
[英]SQL Server Update Column based on value from another table
如果我應該使用觸發器或過程,請提供幫助。 我試圖更新ScaleRating
表GSelfAssessment
從GRatingScale
如果在得分GSelfAssessment
落在GRatingScale的最小值和最大值之間的分數。
最好在更新或插入時為每一行實現。 我相信SQL觸發器是最合適的觸發器。 研究完成后,我了解觸發器中插入/刪除的概念。 例如
CREATE TRIGGER [dbo].[TR_GSelfAssessment_update] ON [dbo].[GSelfAssessment]
FOR UPDATE
AS
BEGIN
UPDATE GSelfAssessment
SET GSelfAssessment.ScaleRating= (Select )---this is where i have a problem-----
END
我相信這里有Guru可以為我提供解決方案。 我會學到很多。
SQL Server支持計算列。 如果要使ScaleRating
始終與其余數據對齊,那么這是最好的方法:
alter table GSelfAssessment
add ScaleRating as ( . . . );
這將添加一個新的“列”,該列將在查詢中使用該值時進行計算。 如果計算成本很高或您要建立索引,請使用persisted
因此該值實際上與其余數據一起存儲-並在需要時重新計算。
您也可以在create table
語句中添加計算列。 如果已經創建了表,則可以刪除該列並重新添加或修改它。
您不應該有該列。 在需要時加入評分表。 如果可以簡化視圖,則可以創建視圖。
select …
from GSelfAssessment a
inner join
GRatingScale r
on (a.Score>r.MinScore and a.Score<=r.MaxScore)
根據需要調整/創建視圖
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.