我有一个带有两个表的SQL Server 2008数据库。第一个表称为Department。第二个表称为票证。这两个表的定义如下:
Department ---------- ID Name TotalTickets Ticket ------ ID DepartmentID Description AssignedTo
我正在尝试找出一种动态更新Department.TotalTickets值的方法。当添加或删除工单时,我想自动增加或减少TotalTickets的值。有人可以告诉我在SQL Server 2008上执行此操作的最佳方法吗?
谢谢
有多种方法可以实现此目的,您可以在票证表上插入或删除后使用触发器,也可以将其TotalTickets移出部门并放在视图中。
TotalTickets
CREATE VIEW viewDepartmentTickets AS SELECT d.Id, d.Name, Sum(t.ID) As TotalTickets FROM Department d LEFT OUTER JOIN Ticket t ON t.departmentid = d.departmentid GROUP BY d.Id, d.Name
如果性能是一个问题,您可以将视图创建为索引视图,因为Thomas指出联接将需要为INNER JOIN,表名必须采用该格式,dbo.Department并且您必须创建视图WITH SCHEMABINDING才能沿此路线前进。
INNER JOIN
dbo.Department
WITH SCHEMABINDING
插入/删除票证后,视图将更新。