我需要将sql server表更新到busy表。但是,我想确保在我完成更改之前,没有其他进程能够更新或选择该表的更新。
但是,我不希望所有其他请求失败,我只是希望他们在队列中等待,直到我解锁表。
如何锁定其他进程的表以确保在执行期间没有其他人更新该时间?
答案 0 :(得分:1)
试试这个
BEGIN TRANSACTION;
-- Add exclusive lock on a table "i.e your_table" until the end of your transaction
SELECT ...
FROM your_table
WITH (TABLOCKX)
-- execute the update on "your_table" your the only one that can now
-- Save the change you made during the transaction and release the table for other transactions
COMMIT TRANSACTION;
答案 1 :(得分:0)
在SQL-Server
中,您可以对表格进行独占锁定。需要访问的其他进程将被搁置。