在下列情况下,我可以使用存储过程触发吗?

时间:2016-10-21 10:40:49

标签: sql-server stored-procedures triggers

我用表格列表  studentId
 studentName
  markOne
markTwo
total

我通过添加totalmarkOne创建了一个计算markTwo的触发器。 每当我更新任何一个标记时,它都会自动更新total字段。

ASK:
但是这个过程可以使用存储过程来实现,那么为什么我们选择触发而不是存储过程?

3 个答案:

答案 0 :(得分:4)

为什么要使用存储过程或触发器?最好的解决方案是使用计算列:

alter table t add total as (markOne + markTwo);

每当您引用total时,都会正确计算值。

注意:您需要从表中删除表或重新创建没有实际列的表。

答案 1 :(得分:0)

在您的情况下,您不需要触发器。您只想更新总字段,因此请勿使用触发器。

在这种情况下触发使用,当你为markone,marktwo添加数据时,它会影响很多表。在超过2-3个表中,你需要在两个字段上更新数据库。然后你可以使用triggers.In你可以简单地使用存储过程。

谢谢。

答案 2 :(得分:0)

您可以为此创建视图,因此您无需更改表格。

create view vwMyTable as
  select studentId, 
         studentName,
         markOne,
         markTwo,
         (markOne + markTwo) as Total
  from   myTable

然后你可以简单地做

select * from vwMyTable