2016-12-27 6 views
1

Ich muss einen Datensatz auf Tabelle mit aktualisieren. ValidTimeStateFieldTypeUTCDateTime, aber ich muss nur ein Zeichenfolgenfeld aktualisieren. Wenn ich diesen Code verwenden:Wie wird das ValidFrom - ValidTo-Tabellenfeld nicht aktualisiert?

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

    ttsbegin; 
    MyTable.update(); 
    ttscommit; 
} 

Nach Befehl MyTable.update(); den Wert auf dem Tisch MyTable.ValidFrom oder MyTable.ValidTo ändern. Ich muss nur den Wert auf StringField ändern, ich muss die Werte auf ValidFrom/To nicht ändern. Ich möchte dieselben Informationen über das UTC-Feld beibehalten und möchte keinen neuen Datensatz erstellen.

Wenn ich MyTable.validTimeStateUpdateMode(ValidTimeStateUpdate::Correction); verwende, erhalte ich einen Fehler.

Es ist möglich, nur Wert zu ändern und nichts auf ValueFrom/To Feld zu berühren?

Danke,

viel Spaß!

+0

Was ist der Fehler, den Sie bekommen, wenn ValidTimeStateUpdate :: Korrektur verwenden? – SShaheen

Antwort

2

Wenn ich mich nicht irre ist es nicht nur möglich, Ihr StringField weil in Ihrer Tabelle in Indizes Sie DateTime Feld definiert haben, zu ändern.

Sie benötigen validTimeStateUpdateMode Funktion verwenden, in Ihrem Code verwenden MyTable und dann MyTable.update() aber Sie verwenden validTimeStateUpdateMode(ValidTimeStateUpdate::EffectiveBased); in MyTable_UPD nicht MyTable.

Dieses Versuchen:

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

} 
ttscommt; 
0

Versuchen Sie einen gültigen Zeit Zustandsbereich in Ihrer select-Anweisung.

Etwas wie folgt aus:

MyTable.validTimeStateUpdateMode(ValidTimeStateUpdate::Correction); 

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

I Beispiele aus dieser MSDN-Seite für Hilfe verwendet: https://msdn.microsoft.com/en-us/library/gg843767.aspx