将表的列设置为同一表中另一列与另一个表上的列之间的计算结果

时间:2014-01-15 09:38:09

标签: sql sql-server

我正在设计一个数据库,我有一个包含计算列的表。表格如下图所示,第一个表格的名称为ProjectDetails.TimeCard,第二个表格为HumanResources.Employee

ProjectDetails.TimeCard
[TimeCardID | EmployeeID(Foreignkey) | BillableHours | **TotalCost** ]

HumanResources.Employee
[EmployeeID(Primarykey) | Fname | Lname | **BillingRate** ]

现在TotalCost是计算列,自动计算为BillableHours*BillingRate

这要求我将表A的计算列设置为同一表中另一列与另一个表B上的列之间的计算结果。

我可以这样做吗?

1 个答案:

答案 0 :(得分:0)

我会这样做:

UPDATE table1 
SET    calculated_column = <calculation> 
FROM   table1 
       JOIN table2 
         ON table1.column1 = table2.column2 

如果您想使用触发器自动执行此操作,请输入以下模板:

CREATE TRIGGER calc_col_trigger
ON table1
 AFTER INSERT,UPDATE
AS

DECLARE @id int;
SET @id = (SELECT id FROM inserted)
-- get a unique identifier from the inserted record

UPDATE table1 
set    calculated_column = <calculation>
FROM   table1 
       JOIN table2 
       ON   table1.column1 = table2.column2 
where  table1.id = @id;
相关问题