- - PR -
DBへの排他制御の方法について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-05-25 10:34
こんにちは。 おそらく2つが混同されているのだと思います。 1.datetime型を使用して日付時刻をタイムスタンプとする。 2.SQL-Server 2000のtimestamp型を使用してrowversionシノニムのタイムスタンプを使用する。 上の書き込みでは流れからして1の事が書かれているのだと思いますが、 めだかさん、takaciniさんが使用されているのは2という事ではないでしょうか? 1は時刻合わせや取得できる精度の問題もあって重複する可能性があり、 SQL-Server 2000でtimestamp型を使用すると2となって、データベース内で 一意である事が保証されるという違いでしょう。 SQL-Server 2000のtimestamp型は、見た目には連番の様なデータになりますよね。 [ メッセージ編集済み 編集者: マー帽 編集日時 2006-05-25 10:37 ] [ メッセージ編集済み 編集者: マー帽 編集日時 2006-05-25 10:39 ] | ||||||||
|
投稿日時: 2006-05-25 10:49
SQL-Server 2000のtimestamp型に使用される値は DB毎の「@@DBTS」に設定されているそうです。 一時テーブルに作成した場合はtempdbの@@DBTSが使用される様ですね。 | ||||||||
|
投稿日時: 2006-05-25 10:57
私の投稿はこちらの条件です。一般論ですので。 DBMSのネイティブな機能を使う場合は問題ないでしょう。 問題があるとすれば互換性に関してですね。 #このスレッドってSQL Serverに限定されてましたっけ? | ||||||||
|
投稿日時: 2006-05-28 19:17
そういうことってあり得るの? 端末Aからの更新と、端末Bからの更新が全く同じ時に発生し、全く同じ時に UPDATE 文が更新される、ってことですよね?で、全く同時だから、同一性の保証に使う更新時刻が、AからもBからも更新されておらず、従ってAもBも更新が可能、と。 あり得るなら、更新回数でのチェックはどうやって、それを防ぐのでしょう?同じように、まだ更新されていないものを比較して、同じだと判断されるのではないでしょうか? 昔聞いた話ですが、サーバに使うようなコンピュータは、内蔵時計が遅れる方向に調整されているそうです。もし実際の時間より進んでしまうと、内蔵時計を戻すため、時間が重複する可能性があると。遅れる方向に調整されているなら、飛ぶことはあっても重複はしない、と。 まぁ、最近はパーソナル コンピュータをサーバ用途で使いますから(略) |