問題タブ [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.
sql - timestamp、rowversion、および datetime - 行が挿入または更新されたときにマークが必要です
次の要件があります。
1 つの一意の自動増分 Int ID とデータ列を持つテーブルがあります。次のものが必要です。そのテーブルに行が挿入されるたびに、テーブルの右端の列にその挿入の完全な日時が保持されている必要があります。また、行が更新された場合、その行のテーブルへの挿入の完全な日時を保持する列が必要であり、その行の更新時間を保持するために更新されます。
これを行うための明白で非常に簡単な方法は、次のとおりです。テーブルを作成します。
datetime 列と Default 制約を追加してテーブルを変更します。
次に、次のように、更新の適切なトリガーを作成します。
ここで難しいのは、ここでの範囲を超えた理由により、上記とまったく同じことをトリガーなしで実装したいということです! 出来ますか?私はSQLタイプのタイムスタンプまたは行バージョンを使用したくありません。これはうまくいきません。その列に明確に保存するには、ミリ秒までの日付と時間を必要とします。どんなアイデアでも大歓迎です。
c# - mongodb の rowversion または doc バージョン
mongodb で行のバージョン管理を行うための適切な方法は何でしょうか。SQL サーバーには、データベース内で追跡された相対時間に基づいて行が更新されたときに自動的にインクリメントされる rowversion フィールドがありました。同じことに対するmongoの良いスキームがどのように見えるか疑問に思いますか?
sql - SQL Server : Oracle で同等の RowVersion
Oracle にはSQL ServerRowVersion
と同様のデータ型がありますか?
行を挿入または更新すると、対応する Version 列 (タイプはRowVersion
) が自動的に更新されます。
MSDN は RowVersion について次のように述べています。
データベース内で自動的に生成された一意の 2 進数を公開するデータ型です。通常、rowversion はテーブル行にバージョン スタンプを付けるメカニズムとして使用されます。ストレージサイズは 8 バイトです。rowversion データ型は単に増加する数値であり、日付や時刻は保持されません。
各データベースには、データベース内の rowversion 列を含むテーブルに対して実行される挿入操作または更新操作ごとにインクリメントされるカウンターがあります。このカウンターは、データベースの行バージョンです。これは、クロックに関連付けることができる実際の時間ではなく、データベース内の相対時間を追跡します。テーブルには、rowversion 列を 1 つだけ含めることができます。rowversion 列を含む行が変更または挿入されるたびに、増分されたデータベースの rowversion 値が rowversion 列に挿入されます。
行の rowversion 列を使用すると、行が最後に読み取られてから変更された値があるかどうかを簡単に判断できます。行が変更されると、rowversion 値が更新されます。行が変更されていない場合、rowversion 値は以前に読み取られたときと同じです。
複数のユーザーが同時に行を更新しているときにデータベースの整合性を維持するために、テーブルに rowversion 列を追加できます。また、テーブルを再クエリせずに更新された行の数と行を知りたい場合もあります。
Oracle を使用してデータ モデルを設計しており、Version 列を使用して同時実行性を管理したいと考えています。
また、オラクルの世界でより良い方法があるかどうかも知りたいです。
sql - 行バージョン (タイムスタンプ) 列が変更されないようにする ALTER TABLE COLUMN
Rowversion
( timestamp
) 列の値を変更せずに次のコマンドを実行したいと思います。SQL Server 2008 R2 と SQL Server CE 4.0 の両方でこれを実現したいと考えています。
の列MyTable
にデータがありませんMyTable
。TextColumn
このコマンドを実行して値を変更しても、すべてのrowversion
値が更新されますが、これは予期された動作ではありません。
これは可能ですか、または回避策はありますか?
編集:
より明確にするために、私の目的は、サーバーが SQL Server 2008 R2 であり、同期クライアントが SQL CE 4.0 である同期環境でデータベース構造の更新を配布することであることを追加する必要があります。
編集 2: この問題は SQL Compact でのみ発生します。通常の SQL Server では、期待どおりに動作します。
編集 3: Microsoft Connect のバグとして記入: https://connect.microsoft.com/SQLServer/feedback/details/816991/unexpected-sql-ce-4-0-rowversion-value-behavior-with-alter-column
entity-framework - フレーム ワーク マイグレーションを使用して rowversion フィールドを作成する方法
エンティティ フレームワークの移行を使用して、rowversion フィールドを生成するにはどうすればよいですか? これが私が達成しようとしているもののサンプルです。
sql-server - 既にrowversion列を持つテーブルにrowversion値を格納するにはどうすればよいですか?
2 つのテーブル ( Users
、DeletedUsers
) とトリガーがありUsers_Delete
ます。rowversion
ユーザー レコードが削除されると、ID と最後の値 (削除される前) をDeletedUsers
テーブルに格納したいと考えています。
SQL ではテーブルに同じ型の複数の列を使用できないため、rowversion
テーブルにどのように格納すればよいですか? どのデータ型を使用すればよいですか?LastUserVersion
DeletedUsers
サンプルコード:
sql-server - @@DBTS を使用して INSERT 後に新しい行バージョンを取得する - 安全ですか?
の後の変数を使用して、新しく作成されIDENTITY
たテーブルを取得するのが一般的な方法です。@@IDENTITY
INSERT
値を使用して同様の方法で最後のrowversion
値を取得することは正しいですか?UPDATE
@@DBTS
例えば:
@@DBTS
同時更新から安全になりましたか ?
UPDATE
別の接続がと の間で挿入と更新を実行する場合PRINT
、rowversion
自分の更新からの接続ではなく、「他の」接続の になりますか?