私は2つのテーブルを持って更新します。 既存のdataRecord(dataRecordID 'id1'は既にDataRecordテーブルに存在します)で、(ほぼすべての)更新が実行されると、DataRecordArchiveテーブルに既存のdataRecord(id: 'id1'バージョン:0)が挿入され、dataRecordが更新され、バージョンは1に変わります(バージョン2、3などに変わります)。したがって、最後のテーブルDataRecordArchiveテーブルのレコードはid: 'id1'とバージョン:0で、DataRecordテーブルのレコードはID: 'id1'とバージョン:1です。基準による2つのテーブルのいずれかからレコードを選択する方法、それは
dataRecordをいくつかの値(bool値 - 行をDataRecordArchiveテーブルに複製する必要はありません。たとえば 'correctFlag')ですが、IDとバージョンがあるため、更新するテーブルを選択する必要があります。更新するレコードがある可能性があります。 DataRecordテーブルまたはDataRecordArchiveテーブルに格納されます。たとえば、dataRecordをid1バージョン0で更新する必要がある場合、そのレコードはDataRecordArchiveテーブルにあります。 id1バージョン1でdataRecordを更新する必要がある場合、レコードはDataRecordテーブルにあります。
何かのように:次に、ID = 'ID1' およびバージョン= 0> 0 DataRecord選択数()ID = 'DataRecordArchiveからDataRecordから
更新場合SELECT COUNT() ID1' とバージョン=> 0は、その後 DataRecordArchive エンド セットcorrectFlag = 1のid = 'ID1' とバージョン= 0
このアップデートのための正しいSQLなステートメントとは何ですか?
動的SQLは、私が望むほどエレガントではありません。これが唯一の方法であれば、私はそれを行います。 –