0

5 つのレコードを持つ Employee テーブルがあり、以下のスクリプトを実行しています。スクリプトの結果は、EmpID 2 のレコードを返します。同時に、レコードが削除されます。これは正しい方法ですか?

begin transaction A
    select * from Employee where EmpID=2
    begin transaction B
        delete from Employee where EmpID=2
    commit transaction B
commit transaction A
4

2 に答える 2

0

で行を選択したい場合は、その行でEmpID = 2いくつかの作業を行い、削除前にこれが変更されないようにするには、更新ロックを使用します。

begin transaction A
    select * from Employee with (updlock) where EmpID=2
    delete from Employee where EmpID=2
commit transaction A

read committedできればよりも高いトランザクション分離レベルを使用することもできますserializable

于 2013-04-08T07:20:10.583 に答える