在另一列中插入值时更新表列

时间:2019-05-16 13:49:40

标签: sql-server database

我有一个分配,我想让一个表在一个值插入到同一表的另一列时自行更新一个列。我不允许使用触发器。

Got表test1具有列(col1,col2),并且当在col2中插入值3、4或5时,我想将同一行的col1中的值更改为'G'。

如何在没有触发器的情况下做到这一点?

我环顾四周,看不到没有触发器就怎么可能,但教授一直说必须没有...

2 个答案:

答案 0 :(得分:0)

或IIF语句。 插入test1(Col1,Col2)值(iif((3,4,5)中的@ Col2,'G',''),@ Col2)

答案 1 :(得分:0)

您在这里使用一些令人困惑的术语。 “在列中插入值”到底是什么意思?在谈论SQL时,我们不会在“存储数据”方面使用单词insert,而不是实际的命令本身。

那么,告诉我们:您是要INSERT新建一行,还是UPDATE现有行吗?

如果您正在INSERT,那么肖恩·兰格(Sean Lange)所说的简单答案就是CASE语句,例如:

insert test1(col1,col2)
select case when value_for_col2 in (3,4,5) then 'G' else NULL end,value_for_col2
from some_other_table

如果您正在UPDATE,那么您可以执行基本相同的操作:

update test1
set col2=some_new_value,
col1=case when value_for_col2 in (3,4,5) then 'G' else col2 end

对于不等于3、4、5的col2值,可保持col1值不变。