我有一张大桌子,它从视图中填充。这样做是因为视图需要很长时间才能运行,并且更容易在表中轻松获得数据。经常运行一个过程以更新表。
TRUNCATE TABLE LargeTable INSERT INTO LargeTable SELECT * FROM viewLargeView WITH (HOLDLOCK)
我想在插入时锁定此表,因此,如果有人尝试选择一条记录,则截断后他们将不会再收到任何记录。我正在使用的锁似乎是锁定视图而不是表。
有没有更好的方法来解决此问题?
BEGIN TRY BEGIN TRANSACTION t_Transaction TRUNCATE TABLE LargeTable INSERT INTO LargeTable SELECT * FROM viewLargeView WITH (HOLDLOCK) COMMIT TRANSACTION t_Transaction END TRY BEGIN CATCH ROLLBACK TRANSACTION t_Transaction END CATCH