【发布时间】:2017-05-08 08:43:44
【问题描述】:
我正在尝试找到一种方法,以便当更新触发器(或其他东西)可以从更新日期时间所在的同一行中选择表中的特定列更新时。我想在更新之前/之后将停止号和列数据捕获到另一个表中。我对 SQL 没问题,但我不是专家,所以我想不出如何做到这一点。
有可能吗?
【问题讨论】:
-
请用一些示例数据解释并解释预期结果
-
提示:
inserted和deleted是表,因此它们可以表示集合操作的结果。假设触发器总是只处理一行,而设计触发器通常是一个糟糕的计划。如果您绝对确定永远不会超过一排,那么请添加对行数的检查,并使用RaIsError或Throw明确告知稍后来的人他们有试图执行不可接受的语句。 (if ( select Count(*) from inserted ) > 1 RaIsError( 'FooTable_Insert: No more than one row may be processed.', 25, 42 ) with log) -
另外,无论你做什么,都不要在触发器内启动任何长时间运行的进程。进来,出去。使用单独的独立流程处理您在触发器之外捕获的数据。
标签: tsql triggers sql-update