`
sisi1984117
  • 浏览: 155646 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

【转】UPDLOCK 更新锁

 
阅读更多

UPDLOCK

  读取表时使用更新锁,而不使用共享锁,并将锁一直保留到语句或事务的结束。UPDLOCK 的优点是允许您读取数据(不阻塞其它事务)并在以后更新数据,同时确保自从上次读取数据后数据没有被更改。

  这是SqlServer2000中对更新锁的说明.

  当我们用UPDLOCK来读取记录时可以对取到的记录加上更新锁,从而加上锁的记录在其它的线程中是不能更改的只能等本线程的事务结束后才能更改,我如下示例:

BEGIN TRANSACTION --开始一个事务
SELECT Qty
 FROM myTable WITH (UPDLOCK)
 WHERE Id in (1,2,3)

 UPDATE myTable SET Qty = Qty - A.Qty
 FROM myTable  AS A
 INNER JOIN  @_Table AS B ON A.ID = B.ID

COMMIT TRANSACTION --提交事务

  这样在更新时其它的线程或事务在这些语句执行完成前是不能更改ID是1,2,3的记录的.其它的都可以修改和读,1,2,3的只能读,要是修改的话只能等这些语句完成后才能操作.从而保证的数据的修改正确

<script></script>

分享到:
评论

相关推荐

    sql锁表与解锁

    * UPDLOCK(修改锁):使用修改锁代替共享锁,保证多个进程能同时读取数据但只有该进程能修改数据。 * TABLOCK(表锁):在整个表上置共享锁,其他进程只能读取而不能修改数据。 * TABLOCKX(排它表锁):在整个表上...

    MS SQL SERVER动态锁分析与应用.pdf

    例如,`SELECT * FROM table WITH (UPDLOCK) WHERE ...`会使用更新锁来检索数据。 意向锁则用于表明事务的意图,如获取共享或排它锁。意向共享锁(IS锁)表示事务打算获取共享锁,意向排它锁(IX锁)表示事务打算...

    关于数据库的锁

    在这个例子中,T1在执行更新操作之前先获取了更新锁,这意味着其他事务如T2无法执行更新操作,除非T1释放锁。 ##### 4. 持久锁(HoldLock) - **定义**:持久锁是在事务中持续持有的锁,即使事务执行了其他操作...

    SQLserver锁和事务隔离级别的比较与使用[定义].pdf

    保持到读取结束,REPEATABLEREAD 和 SERIALIZABLE 都会发出共享锁,保持到事务结束,HOLDLOCK 会发出共享锁,保持到事务结束,XLOCK 会发出排他锁,保持到事务结束,UPDLOCK 会发出更新锁,保持到事务结束。...

    数据库中的锁机制.pdf

    7. **UPDLOCK**:更新锁,用于在读取数据时锁定行,防止其他事务同时更新这些行。这种锁在事务中通常用于实现"先读后写"策略,确保数据在更新前不会被其他事务改变。 在实际应用中,选择合适的锁类型取决于事务的...

    SQLserver锁和事务隔离级别的比较与使用

    `XLOCK`和`UPDLOCK`则用于获取排他锁或更新锁,确保数据在更新前不会被其他事务修改。 在实际应用中,选择合适的锁类型和事务隔离级别至关重要,因为它直接影响到系统的并发性能和数据的一致性。例如,如果事务处理...

    SELECT语句中加锁选项的功能说明

    - UPDLOCK选项在读取数据时施加修改锁,而不是传统的共享锁。这样,其他事务可以继续读取数据,但不能进行更新操作,直到当前事务结束。这个选项常用于实现“预占锁”,确保在实际更新之前,数据不会被其他事务修改...

    隔离级别和UPDLOCK的性能

    当在SELECT语句中使用`UPDLOCK`,系统会将所选的行或页面置于更新锁状态,这样其他事务就不能同时对这些行进行修改。这在需要先读后写的情况下特别有用,因为它可以避免因其他事务插入新行而导致的幻读问题。 在...

    sqlserver 锁表语句分享

    * `SELECT * FROM table WITH (UPDLOCK)`: 这个语句可以锁定数据库的一个表,使用修改锁来代替共享锁。 * `SELECT * FROM table WITH (TABLOCK)`: 这个语句可以锁定数据库的一个表,使用表锁来代替共享锁。 * `...

    sqlserver2008锁表语句详解(锁定数据库一个表)

    `SELECT * FROM table WITH (UPDLOCK)` 会施加修改锁,使得在读取数据时,SQL Server使用的是更新锁而不是共享锁,这样在事务期间,只有当前事务可以更新选定的行,其他事务只能读取,不能修改。 5. **TABLOCK**:...

    sqlserver锁表、解锁、查看销表的方法

    `UPDLOCK`和`HOLDLOCK`组合可以在读取数据的同时获取更新锁,避免了死锁的可能性。 SQL Server中的事务管理和锁机制密切相关。事务确保了一组操作的原子性、一致性、隔离性和持久性(ACID属性),而锁则是实现事务...

    C#的Sql server学习笔记

    UPDLOCK (修改锁):** - **功能:** 使用修改锁来代替共享锁,并保持锁到事务结束。 - **用途:** 允许多个进程同时读取数据,但只有当前进程可以修改数据。 **4. TABLOCK (表锁):** - **功能:** 对整个表加上共享...

    SQL Server锁介绍及死锁原因

    2. **更新锁(U)**:更新锁是一种临时的锁,允许读取数据,并准备进行更新,但防止其他事务在此期间修改数据。使用`WITH (UPDLOCK)`提示可以在读取数据时锁定记录,以防止其他事务修改。 3. **排他锁(X)**:排他...

    ------事务的隔离级别

    - `UPDLOCK`: 对更新的数据加锁。 #### 7. 死锁处理 死锁是指两个或更多事务相互等待对方释放资源,从而陷入无限等待的状态。SQL Server提供了自动检测和解决死锁的机制,当检测到死锁时,系统会选择牺牲一个事务...

    深入分析MSSQL数据库中事务隔离级别和锁机制

    6. **UPDLOCK**:更新锁,允许读取并锁定行,准备后续的更新操作,防止其他事务同时修改。 了解这些锁提示,可以帮助我们在设计并发策略时做出更明智的选择。例如,使用`NOLOCK`可以提高读取性能,但牺牲了数据的...

    SQL Server 2000 并发控制

    - 火车订票系统的更新锁实现:通过`UPDLOCK`关键字锁定需要更新的记录,直到事务结束。 4. **解决写覆盖问题** - 当多个事务同时更新同一记录时,可能会发生写覆盖问题。一种解决方案是在更新操作之前先获取一...

    sql的update语句功能非常强大.docx

    - `UPDLOCK`:更新锁。 2. **查询提示**:查询提示用于指导查询优化器如何执行查询,例如选择适当的索引或连接策略。常用的查询提示包括: - `HASH`、`ORDER`、`CONCAT`、`MERGE`等提示用于控制连接和分组操作的...

Global site tag (gtag.js) - Google Analytics