我正在研究一个存储过程,它对类中的学生执行一些操作
在最后一步中,它根据某些标准更新了一些学生的状态.
这一切都很直接,但我在这里陷入两难境地.基本上系统中存在一个名为sp的sp
pUpdateStudentStatus(studentID, statusID, comments, userID)
Run Code Online (Sandbox Code Playgroud)
只要更新单个用户的状态,应用程序就会使用此sp.除了更新状态外,它还会记录StudentStatusHistory表中的更改.
所以这就是我的困境,
还有其他选择吗?你会选哪一个?
我相信使用更新触发器的替代方法不是一种方法,因为我需要一些额外的细节,例如更改状态的用户的userId和注释
我使用的是SqlServer2005
您没有说明是pUpdateStudentStatus在您的控制之下还是由第三方创建。
如果它是第三方 SP,我认为您没有太多选择,只能使用游标/循环,因为 SP 的内部结构可能会在未来版本中发生变化。
如果 SP 在您的控制之下,另一个选择是创建一个pUpdateStudentStatus具有新名称的版本,该版本将以基于集合的方式运行(可能通过接受参数表变量),然后重写现有版本pUpdateStudentStatus以充当使用参数表中的一行调用新过程的包装器。