問題タブ [rowversion]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
133 参照

openedge - OpenEdge データベース行バージョン

OpenEdge データベースのテーブルに行バージョン戦略を実装しようとしています。

私が思いついた簡単な解決策は、iRowVersion各テーブルに整数フィールドを追加し、次のように書き込みトリガーを検証してフィールドをインクリメントすることです。

これにより、同時変更が上書きされるのを防ぐことができますが、行ごとに 1 つずつインクリメントするのが最適かどうかはわかりません。SQL ROWVERSION はデータベース全体でインクリメントされ、そのアプローチをエミュレートするには、代わりにシーケンスを使用します。

多くのレコードが変更される大規模なデータベースでは、これによりシーケンスが非常に急速に増加する可能性があります。テーブルごとにシーケンスを持つことでこれを削減できますが、やり過ぎのように思われ、+1 アプローチによりシンプルに保たれます。

質問を明確にするために-行の最後のバージョンに基づいて行のバージョン番号をインクリメントする方が良いでしょうか、またはSQLのようなアプローチを採用して、すべての行バージョンをデータベースに固有にする必要があります。

さらに、SQL スタイルのルートを下る場合、作成トリガーは最初の行バージョンを割り当てる必要がありますか? (それ以外の場合、変更されていないすべての新しいレコードは 0 で初期化されます)。