如何不更新 ValidFrom - ValidTo table 字段?

How to not update ValidFrom - ValidTo table field?

我必须使用 ValidTimeStateFieldType UTCDateTime 更新 Table 上的记录,但我只需要更新一个字符串字段. 如果我使用此代码:

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

  ttsbegin;
  MyTable.update();
  ttscommit;
}

在命令 MyTable.update(); 后更改 table MyTable.ValidFrom 或 MyTable.ValidTo 上的值。 我只需要更改 StringField 上的值,不需要更改 ValidFrom/To 上的值。我想在 UTC 字段上保留相同的信息,我不想创建新记录。

如果我使用 MyTable.validTimeStateUpdateMode(ValidTimeStateUpdate::Correction); 我收到一个错误。

是否可以仅更改值而不触及 ValueFrom/To 字段上的任何内容?

谢谢,

尽情享受吧!

如果我没记错的话,不可能只修改你的 StringField 因为在你的 tableIndexes 你已经定义了 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;

尝试在您的 select 语句中使用有效的时间状态范围。

像这样:

MyTable.validTimeStateUpdateMode(ValidTimeStateUpdate::Correction);

ttsbegin;
while select forUpdate validTimeState(100, 3154) * from MyTable
{
  MyTable.StringField = "Test";
  MyTable.update();
}
ttscommit;

我使用了此 MSDN 页面中的示例来寻求帮助:https://msdn.microsoft.com/en-us/library/gg843767.aspx