如何不更新ValidFrom - ValidTo表字段?
问题描述:
我必须更新表格上的记录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字段上的任何内容?
谢谢,
享受!
答
如果我没有记错的话,不可能只修改您的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;
答
尝试使用有效时间状态范围在你的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
什么是你正在使用ValidTimeStateUpdate ::校正时得到的错误? – SShaheen