2017-08-13 30 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,當名稱爲'級別'的列名得到更新時,那麼我需要更新該行的日期,尊重'級別' –

相關問題