我有一个分配,我想让一个表在一个值插入到同一表的另一列时自行更新一个列。我不允许使用触发器。
Got表test1具有列(col1,col2),并且当在col2中插入值3、4或5时,我想将同一行的col1中的值更改为'G'。
如何在没有触发器的情况下做到这一点?
我环顾四周,看不到没有触发器就怎么可能,但教授一直说必须没有...
答案 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值不变。