sql server大家帮我看一个存储过程

来源:百度知道 编辑:UC知道 时间:2024/06/04 02:07:54
ALTER PROCEDURE [dbo].[AspNet_SqlCacheUpdateChangeIdStoredProcedure]
@tableName NVARCHAR(450)
AS

BEGIN
UPDATE dbo.AspNet_SqlCacheTablesForChangeNotification WITH (ROWLOCK) SET changeId = changeId + 1
WHERE tableName = @tableName
END

======

上面的存储过程,WITH (ROWLOCK)是什么意思啊,我不太明白,望大家告诉我一下,谢谢。
程序中用的话好不好呢

防止出错的。ROWLOCK 告诉SQL Server只使用行级锁。ROWLOCK语法可以使用在SELECT,UPDATE和DELETE语句中,不过 我习惯仅仅在UPDATE和DELETE语句中使用。如果在UPDATE语句中有指定的主键,那么就总是会引发行级锁的。但是当SQL Server对几个这种UPDATE进行批处理时,某些数据正好在同一个页面(page),这种情况在当前情况下 是很有可能发生的,这就象在一个目录中,创建文件需要较长的时间,而同时你又在更新这些文件。当页面锁引发后,事情就开始变得糟糕了。而如果在 UPDATE或者DELETE时,没有指定主键,数据库当然认为很多数据会收到影响,那样 就会直接引发页面锁,事情同样变得糟糕。

通 过指定使用行级锁,这种情况可以得到避免。

ROWLOCK确保数据的完成性.就是你在插入,更新、删除的那几行将被锁住,其他用户不允许操作这些数据