我必须使用 ValidTimeStateFieldType UTCDateTime 更新Table上的记录,但我只需要更新字符串字段。 如果我使用此代码:
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 :(得分:2)
如果我没有弄错,则无法仅修改您的StringField
,因为您在 索引 的表格中已定义DateTime
字段。
您需要使用validTimeStateUpdateMode
功能,在您的代码中使用MyTable
然后使用MyTable.update()
,但您使用validTimeStateUpdateMode(ValidTimeStateUpdate::EffectiveBased);
中的MyTable_UPD
而不是MyTable
。
试试这个:
ttsbegin;
while select forUpdate MyTable
{
MyTable.StringField = "Test";
MyTable.validTimeStateUpdateMode(ValidTimeStateUpdate::Correction);
MyTable.update();
}
ttscommt;
答案 1 :(得分: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