2016-12-27 49 views
1

我必須更新表格上的記錄ValidTimeStateFieldTypeUTCDateTime,但我只需要更新一個字符串字段。 如果我用這個代碼:如何不更新ValidFrom - ValidTo表字段?

while select forUpdate MyTable 
{ 
    MyTable.StringField = "Test"; 
    MyTable_UPD.validTimeStateUpdateMode(ValidTimeStateUpdate::EffectiveBased); 

    ttsbegin; 
    MyTable.update(); 
    ttscommit; 
} 

命令後MyTable.update();更改表MyTable.ValidFrom或MyTable.ValidTo值。 我只需要更改StringField上的值,我不需要更改ValidFrom/To上的值。我想保留UTC字段的相同信息,但我不想創建新記錄。

如果我使用MyTable.validTimeStateUpdateMode(ValidTimeStateUpdate::Correction);,則會收到錯誤消息。

可以只更改值並且不要觸摸ValueFrom/To字段上的任何內容?

謝謝,

享受!

+0

什麼是你正在使用ValidTimeStateUpdate ::校正時得到的錯誤? – SShaheen

回答

2

如果我沒有記錯的話,不可能只修改您的StringField因爲在你的指標您已經定義DateTime場。

您需要使用validTimeStateUpdateMode功能,在你的代碼中使用MyTable然後MyTable.update()但你在MyTable_UPD沒有MyTable使用validTimeStateUpdateMode(ValidTimeStateUpdate::EffectiveBased);

試試這個:

ttsbegin; 
while select forUpdate MyTable 
{ 
    MyTable.StringField = "Test"; 
    MyTable.validTimeStateUpdateMode(ValidTimeStateUpdate::Correction); 
    MyTable.update(); 

} 
ttscommt; 
0

嘗試使用有效時間狀態範圍在你的SELECT語句。

事情是這樣的:

MyTable.validTimeStateUpdateMode(ValidTimeStateUpdate::Correction); 

ttsbegin; 
while select forUpdate validTimeState(1\1\1900, 31\12\2154) * from MyTable 
{ 
    MyTable.StringField = "Test"; 
    MyTable.update(); 
} 
ttscommit; 

我用的例子,從這個MSDN頁面的幫助:https://msdn.microsoft.com/en-us/library/gg843767.aspx