小编典典

在SQL中自动设置字段值

sql

我有一个带有两个表的SQL Server 2008数据库。第一个表称为Department。第二个表称为票证。这两个表的定义如下:

Department
----------
ID
Name
TotalTickets

Ticket
------
ID
DepartmentID
Description
AssignedTo

我正在尝试找出一种动态更新Department.TotalTickets值的方法。当添加或删除工单时,我想自动增加或减少TotalTickets的值。有人可以告诉我在SQL
Server 2008上执行此操作的最佳方法吗?

谢谢


阅读 183

收藏
2021-04-14

共1个答案

小编典典

有多种方法可以实现此目的,您可以在票证表上插入或删除后使用触发器,也可以将其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才能沿此路线前进。

插入/删除票证后,视图将更新。

2021-04-14