在SQL Server中运行查询后更新

时间:2016-09-13 09:30:40

标签: sql sql-server

我有一个可以从SQL Server导入视图或表的规划工具。我只从表tblPlanning导入记录状态'来计划'。导入后,从规划工具执行,我希望导入的记录的状态变为“计划”。 我认为在调用视图vExportPlanning之后我可以使用触发器来运行存储过程,但似乎触发器仅适用于UPDATE / DELETE / INSERT语句。 有人能指出我正确的方向吗?谢谢!

2 个答案:

答案 0 :(得分:0)

您可以在选择或更新

时执行此操作

我建议您在选择时进行,如下所示

Select col1,col2,....,'Planned' as status  from tblPlanning 
where status='Plan'

在查询中,您将选择带有'*'的所有列。这里用列名替换*。

答案 1 :(得分:0)

有一个很好的理由,为什么在刚刚选择数据时你真的不应该更新数据。当然,您的视图将由您的应用程序读取,处理数据并通过简单地读取视图来更新行。这可能听起来像是一种同步某事的快速方式,但想象一下你想测试视图。你会因意外更新的行而遇到麻烦,只是因为你试图检索一些数据。

因此,在选择之前/而不是之后触发某些内容对于" good"是否有意义。设计。

正如其他人提到的(我完全同意),你应该使用存储过程或函数返回表。后者意味着,你有一个函数,它基本上就像一个视图,但在其中你有机会运行代码来更新返回的数据。

根据应用程序中的更新和插入类型导致类似问题,您可能还会看一下游标的概念。