2016-12-23 8 views
0

私のアプリケーションは、Delphi XE5 + Firebird-2.5.6、クライアント/サーバでコード化されています。 ZeosLib。ローカルFirebirdテーブルの編集

私はこのようなレコードを編集する場合:私は場合は、ローカルネットワーク上でこのコードを知りたいと思った

ZTable1.Edit; 
ZTable1.FieldValues['champ1'] := Edit1.Text; 
ZTable1.Post; 

を、それが心配や編集とポストの競合をしてください持っているだろうか?つまり、複数のユーザーがテーブルを編集しても、影響を受けたり、エラーメッセージが表示されたりすることはありません。はいの場合、この不便を避ける方法を教えてください。

ありがとうございました。

+1

ユーザーAがレコードを画面に開いていて、編集中にそのユーザーが昼食になったとします。 Aは昼食中ですが、ユーザーBは同じレコードを編集して変更を保存できますか?もしそうなら、Aが仕事を再開したときにどうなるのでしょうか? (これはdbトランザクション処理と同じくらいビジネスロジックです) – MartynA

+0

アプリケーションの2つのコピーを実行するだけで、これを自分で把握することができますか? –

+0

編集はデータベースには影響しません。投稿のみが影響します。 3行は遅れなく非常に迅速に実行されます。数十人のユーザーであってもポストでのロック競合の可能性はほとんどありません。ユーザーはいつEdit1に値を入力できますか? – nolaspeaker

答えて

0

これは、他のユーザーを作成するこのレコードのアクションと、トランザクションがアクティブになる期間によって異なります。

読み取りまたは後のお取引は、編集のためにトランザクションの終了前に、競合

できなくなりますか、ユーザートランザクションを待って、no_waitフラグで開始されている場合、別のユーザーのレコードを削除すると、メッセージをロックしたりもコミットやロールバック編集済み取引完了

PS Zeos for Firebirdは非常にストレスの多い選択肢です。なぜあなたは標準的なIBXライブラリを使用していないのですか?

+0

こんにちは ZConnectionコンポーネントは自動コミットです。 Zeosはトランザクションを処理します。実行時間は、ユーザーによって異なります.1分以上かかるように10秒かかる場合があります。 私はZeosと仕事をしていました。 –

+0

@Bill "Autocommit"は 'ExecSQL;コミットする。この操作レコードの間はロックされています。 'Post'サーバはレコードの編集について何も知りません。アプリケーションを2つ実行して、同じレコードを編集してみてください –

関連する問題