SQL SERVERのトランザクションでSELECT文を使用して行をロックすることはできますか?私は行をロックしたいので、外部からの他のトランザクションはその行に到達できません。SQL SERVERのトランザクションでSELECT文を使用して行をロックすることはできますか?
トランザクションがコミットまたはロールバックされた後、その行を解放する必要があります。ここに私の意味は...
BEGIN TRANSACTION TRAN1
SELECT * FROM HR.Employees WITH (UPDLOCK) WHERE empid=1
...
...
...
...
COMMIT TRANSACTION
誰か提案がありますか?行をロックするためにUPDATE文を実行する必要がありますか?
この質問には重複しないでください。私はUPDATEステートメントについて質問していないので、私は尋ねています。SELECT
編集:私は 'TRANSACTION ISOLATION LEVEL SERIALIZABLE'を試みましたが、あまりにも多くのものをロックします。私のSPは巨大で、多くのSELECT文があります。 'SET TRANSACTION ISOLATION LEVEL SERIALIZABLE'は、SPのすべてのSELECTから行をロックします。しかし、私は1つのテーブルから行だけをロックしたいと思います。
@Oscar、いいえあなたが提供したリンクと重複していません。私はSELECTについて質問しています。あなたのリンクはUPDATEステートメント –
を説明していますこの他の1つ:http://stackoverflow.com/questions/9502273/in-sql-server-how-can-i-lock-a-single-row-in-a-way-similar- oracleles- – Oscar
@Oscarを選択すると、私はあなたが与えたリンクで解決策を試しました。それは私に大きな希望を与えましたが、それは仕事をしませんでした。 SPの "SET TRANSACTION ISOLATION LEVEL SERIALIZABLE"は多くのことをロックするためです。私のSPは巨大で、たくさんのSELECTをします。選択したすべての行がロックされると、システムは停止します。私は具体的には、SPのSELECTを使用して1つのテーブルから行をロックしたい –