【发布时间】:2016-12-30 06:12:30
【问题描述】:
假设我有下表T1:
| col1 | col2 |
|------|------|
| 0 | 0 | // A++
| 3 | 123 | // B++
| 0 | 5 | // C++
| 8 | 432 | // A++
| 0 | 4 | // B++
我现在需要创建一个触发器(在 INSERT 上),它分析每一行,增加一个计数器(见下文),用计数器的值填充表 T2:
IF col1 = 0 AND col2 = 0
A++
ELSE IF col1 = 0 col2 > 0
B++
ELSE IF col1 > 0
C++
在这种情况下,T2 看起来像:
| id | A | B | C |
|----|---|---|---|
| 1 | 1 | 2 | 2 |
我的问题更多是关于设计:我真的应该像HERE 所述那样遍历每一行,还是有更有效的方法?
【问题讨论】:
-
如何确定 T1 中的哪些值用于
A、B或C? -
@RaduGheorghiu:请看一下我提供的伪代码。
-
我永远不会遍历一个表,如果你必须这样做,那么你的设计或算法很糟糕。
-
您的各种条件似乎是互斥的,仅取决于当前行中的数据。我看不出有什么理由你不会在单个
SELECT中并行计算所有值而不是迭代。
标签: sql sql-server tsql triggers sql-server-2008-r2