私がオフライン ソリューションを構築していたとき、人々がオフラインでデータを変更し、夜間にそれを同期することができたときに、構成データについてその決定を行うための最良の方法を見つけました (を扱う) はtimestamp
、すべての行に a を保持することでした。これが非常にうまく機能した理由は、timestamp
すべてのテーブルに対する単純な MAX クエリに基づいて、これらの値にインデックスを付けるテーブルを作成できたからです。したがって、そのテーブルは次のようになります。
CREATE TABLE TimestampIndex (
TableName SYSNAME PRIMARY KEY,
LastChange TIMESTAMP
)
次に、基本的なクエリを実行し、オフラインになったときにそのテーブルにデータを入力できます。
IF EXISTS (SELECT TableName FROM TimestampIndex WHERE TableName = 'Table1')
UPDATE TimestampIndex SET LastChange = (SELECT MAX(ts) FROM Table1)
ELSE
INSERT INTO TimestampIndex (TableName, LastChange) SELECT 'Table1', MAX(ts) FROM Table1
そして、彼らがオンラインに戻ったときに、次のようなことを簡単に実行できました。
IF NOT EXISTS (SELECT TableName FROM TimestampIndex WHERE TableName = 'Table1' AND LastChange = (SELECT MAX(ts) FROM RemoteDb.dbo.Table1))
BEGIN
-- there must be changes to make then
END