2017-08-13 27 views
0

我是一个新的SQL和不能得到这个。当一列接收的数据 我怎样才能更新列的日期,并符合一定的值,那么日期应该在一列我怎样才能更新列的数据时,由一列接收数据

这里可以自动更新是我的表怎么看起来像

Id level level_4_Updated level_5_updated level_6_updated 
1....4.............Null........................Null.......................Null 
2....5.............Null........................Null.......................Null 
3....6.............Null........................Null.......................Null 
4....5.............Null........................Null.......................Null 
5....4.............Null........................Null.......................Null 

如果actual_level为4,那么应该在level_4_updated中更新日期,如果level为5,那么日期应该在level_5_updated中在level获取数据时自动更新。并且每行的更新应该是独立的。如果我们更新任何行,它不应该影响其他行。我可以通过使用触发器来获得这个查询吗?

谢谢你提前

回答

1

这是你在找什么?

update t 
    set level_4_Updated = (case when level = 4 then now() else level_4_Updated end), 
     level_5_Updated = (case when level = 5 then now() else level_5_Updated end), 
     level_6_Updated = (case when level = 6 then now() else level_6_Updated end) 
    where id = @id; 
+0

level_4_Updated,level_5_Updated,level_6_Updated是日期时间格式,所以他们不会允许插入整数。 –

+0

语法错误: –

+0

Msg 102,Level 15,State 1,Line 2 ')'附近的语法不正确。 –

0

首先,我认为英语不是你的第一语言!

当你说“日期”时,我认为你的意思是数据或数据输入。

所以你要做的是将数据输入到一个名为“updated-level_i”的列中,其中名为“level”的列保存了值i。

您只需编写一个stored procedure来遍历表中的每行数据,获取“级别”列中的数据条目,根据此值分配适当的更新列,然后在该列上执行更新。

+0

我很抱歉,但我需要获取DATE,当名称为'级别'的列名得到更新时,那么我需要更新该行的日期,尊重'级别' –

相关问题