【问题标题】:Updating other values in sql when one value is updated更新一个值时更新sql中的其他值
【发布时间】:2017-03-20 17:34:58
【问题描述】:

我想创建一个触发器来更新其他行,其中一列中的值相同,但另一列中的值不同。

这就是我的意思:

原文:

Column a | Column b  | Column C
---------+-----------+-----------
abc      | Maybe     | 01
abcde    | Maybe     | 02
abcde    | Maybe     | 03
abc      | Maybe     | 04
abc      | Maybe     | 05

将一个更改为是时:

Column a | Column b  | Column C
---------+-----------+-----------
abc      | Yes       | 01
abcde    | Maybe     | 02
abcde    | Maybe     | 03
abc      | No        | 04
abc      | No        | 05

为了澄清,它是之前和之后的同一张表。这个想法是改变一列中的一个值,将改变另一列中具有相同值的其他值。共同的价值是“abc”。所以我要做的是创建一个触发器,这样当我为任何一个“abc”更改b列中的“可能”时,a列中值为“abc”的其他行将自动拥有它们b 列中的值更改为“否”。我不知道我将为此触发器使用什么操作过程,或者如何将行链接在一起以同时受到影响。

【问题讨论】:

  • 你已经设定了一个目标。现在你的问题是什么?
  • 怎么知道是哪一个?有标准吗?
  • 抱歉,在提出问题时,我忘了补充说每一行都包含一个 id。在上面的示例中,C 列中标记为“01”的行是已更改的行。
  • 澄清一下,前后是同一张表。这个想法是改变一列中的一个值,将改变另一列中具有相同值的其他值。共同的价值是“abc”。所以我要做的是创建一个触发器,这样当我为任何一个“abc”更改b列中的“可能”时,a列中值为“abc”的其他行将自动拥有它们b 列中的值更改为“否”。

标签: asp.net sql-server sql-server-2008


【解决方案1】:

使用after update 触发器,您可以执行以下操作:

update t
  set column_b = 'No'
from t
  inner join inserted i
    on t.column_a = i.column_a
where t.id <> i.id /* the table probably has an id */
--where t.column_b <> i.column_b /* if not */

【讨论】:

    猜你喜欢
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多