我必须使用> valimestatefieldtype utcdateTime 更新表上的记录,但是我只需要更新字符串字段。如果我使用此代码:
while select forUpdate MyTable
{
MyTable.StringField = "Test";
MyTable_UPD.validTimeStateUpdateMode(ValidTimeStateUpdate::EffectiveBased);
ttsbegin;
MyTable.update();
ttscommit;
}
命令MyTable.update();
之后更改表mytable.valid.valid.valid.validto上的值。我只需要更改 stringfield 上的值,我不需要更改有效From/to上的值。我想在UTC字段上保留相同的信息,并且不想创建新记录。
如果我使用MyTable.validTimeStateUpdateMode(ValidTimeStateUpdate::Correction);
,我会收到错误。
可能只能更改值,而不触摸到字段上的值?
谢谢,
享受!
如果我没记错的话,不可能仅修改您的 StringField
strong>您已经定义了DateTime
字段。
您需要使用validTimeStateUpdateMode
功能,在代码中使用MyTable
,然后使用MyTable.update()
,但是您在MyTable_UPD
中使用validTimeStateUpdateMode(ValidTimeStateUpdate::EffectiveBased);
,而不是MyTable
。
尝试以下方法:
ttsbegin;
while select forUpdate MyTable
{
MyTable.StringField = "Test";
MyTable.validTimeStateUpdateMode(ValidTimeStateUpdate::Correction);
MyTable.update();
}
ttscommt;
尝试在选择语句中使用有效的时间状态范围。
类似的东西:
MyTable.validTimeStateUpdateMode(ValidTimeStateUpdate::Correction);
ttsbegin;
while select forUpdate validTimeState(111900, 31122154) * from MyTable
{
MyTable.StringField = "Test";
MyTable.update();
}
ttscommit;
我使用此MSDN页面中的示例进行帮助:https://msdn.microsoft.com/en-us/library/gg843767.aspx