`
尘枉_yjava
  • 浏览: 73870 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

数据库 for update of 和 for update区别。

 
阅读更多
对比区别:

  select * from TTable1 for update 锁定表的所有行,只能读不能写

select * from TTable1 where pkid = 1 for update 只锁定pkid=1的行

select * from Table1 a join Table2 b on a.pkid=b.pkid for update 锁定两个表的所有记录

  select * from Table1 a join Table2 b on a.pkid=b.pkid where a.pkid = 10 for update 锁定两个表的中满足条件的行



   select * from Table1 a join Table2 b on a.pkid=b.pkid where a.pkid = 10 for update of a.pkid 只锁定Table1中满足条件的行



for update 是把所有的表都锁定

for update of 根据of 后表的条件锁定相对应的表



如果加了for update后 该语句用来锁定特定的行(如果有where子句,就是满足where条件的那些行)。当这些行被锁定后,其他会话可以选择这些行,但不能更改或删除这些行,直到该语句的事务被commit语句或rollback语句结束为止。
分享到:
评论

相关推荐

    数据库oracle for update of和for update的区别

    ### 数据库Oracle锁:FOR UPDATE OF与FOR UPDATE的区别 在Oracle数据库中,为了确保数据的一致性和准确性,尤其是在多用户环境中进行并发操作时,锁机制是必不可少的一部分。本文将详细介绍`FOR UPDATE`与`FOR ...

    update语句的优化-oracle

    对于大量相似的更新操作,可以考虑使用BULK COLLECT和FORALL语句进行批量处理,以减少网络和数据库调用的开销: ```sql DECLARE TYPE col_table IS TABLE OF table_name.column_name%TYPE INDEX BY PLS_INTEGER; ...

    使用游标更新数据库

    在使用游标更新数据库时,需要在声明游标的时候使用 FOR UPDATE 选项,以便在打开游标时锁定游标结果集与表中对应数据行的所有列和部分列。这样可以保证正在进行操作的数据不被另外的用户修改。 2. FOR UPDATE 选项...

    Mysql Update批量更新的几种方式

    通常情况下,我们会使用以下SQL语句来更新字段值: ...for x in xrange(10): sql = ''' UPDATE mytable SET myfield='value' WHERE other_field='other_value'; ''' 这种方法并没有什么任何错误,

    oracle的update的五种方式

    例如:`BEGIN FOR cr IN (SELECT * FROM t_join_situation WHERE year='2011') LOOP UPDATE t_join_situation SET join_state='1' WHERE current of cr; END LOOP`。这种方式适用于大批量数据的更新,但需要注意游标...

    DB2 数据库命令简介

    - `db2 update db cfg for 数据库名 using 参数名 参数值` 更新数据库配置。 6. **应用管理**: - `db2 force application all` 强制关闭所有应用连接。 - `db2 list applications` 列出当前活动的应用。 - `...

    触发器---FOR INSERT与INSTEAD OF

    触发器---FOR INSERT与INSTEAD OF 触发器是一种特殊的存储过程,它可以自动执行某些操作以响应特定的事件,如INSERT、UPDATE、DELETE等。触发器可以帮助我们自动执行一些必要的操作,以确保数据的一致性和完整性。...

    ROAD EXTRACTION FOR THE UPDATE OF ROAD DATABASES IN SUBURBAN

    ### 道路提取技术在郊区更新道路数据库的应用 ...未来的研究可以进一步探索如何提高算法在更加复杂场景下的鲁棒性和精确度,比如如何更好地应对阴影、植被遮挡等问题,从而为道路数据库的更新提供更加强大的支持。

    数据库学习中的触发器

    这里,`trigger_name`是触发器的名称,`table`或`view`是触发操作的对象,`WITH ENCRYPTION`用于加密触发器定义,`FOR`、`AFTER`或`INSTEAD OF`定义触发时机,`INSERT`、`UPDATE`和`DELETE`定义触发操作,`sql_...

    数据库技术实验报告(过程式数据库对象的使用)

    在数据库技术中,过程式数据库对象是数据库管理系统(DBMS)中用于实现复杂业务逻辑和数据处理的重要组成部分。本实验报告将深入探讨存储过程、存储函数、触发器和事件的创建与使用,旨在帮助学生掌握这些核心概念。...

    软件设计大赛数据库设计

    其中,数据库触发器是数据库管理系统中一种强大的工具,它可以自动响应特定的数据库操作,如数据的插入(INSERT)、删除(DELETE)和更新(UPDATE)。数据库触发器的主要目的是维护数据的完整性和一致性,以及实现...

    数据库触发器数据库触发器.ppt

    数据库触发器的类型有三种:DML触发器、Instead-of触发器和系统触发器。DML触发器可以在DML语句之前或之后执行,以检查和限制用户的操作。Instead-of触发器可以在视图上执行,以便在视图上实现业务逻辑。系统触发器...

    数据库触发器是一种存储过程

    数据库触发器是数据库管理系统中的一种重要机制,它们本质上是预定义的存储过程,可以在特定的数据库操作(如INSERT、UPDATE、DELETE)发生时自动执行。SQL Server提供了对触发器的支持,允许用户根据需要创建和定制...

    SQL Server数据库实验_存储过程与触发器设计.docx

    在SQL Server数据库中,存储过程和触发器是两种重要的数据库对象,它们在数据管理与业务逻辑处理中扮演着关键角色。 存储过程是预编译的SQL语句集合,它可以包含一系列的数据操作,如查询、更新、插入和删除等。...

    数据库系统概论(王珊第五版)数据库实验9.doc

    数据库完整性是确保数据库中数据准确性和一致性的关键概念,它主要分为实体完整性、参照完整性和用户定义完整性。在实验九中,我们将通过一系列T-SQL语句和触发器的运用来深入理解这些概念。 首先,我们需要掌握...

    sql数据库实践实验六

    创建触发器的基本语法是`CREATE TRIGGER trig_name [BEFORE|AFTER|INSTEAD OF] ACTION ON table_name FOR EACH ROW`,其中ACTION可以是INSERT, UPDATE或DELETE。 - trig_update的修改:修改触发器以同时返回被更新...

    数据库原理与运用(游标管理)

    [FOR {READ ONLY|UPDATE[OF column_name_list]}] ``` 其中,`cursor_name`是游标的名称,`select_statement`是定义结果集的`SELECT`语句,`FOR READ ONLY`表示只读游标,`FOR UPDATE`表示可更新游标。 示例: - ...

    ORACLE游标中的多表UPDATE行锁讨论.pdf

    FOR UPDATE OF column1, column2; ``` 需要注意的是,行锁是在游标OPEN时开始,直到事务提交(COMMIT)或回滚(ROLLBACK)时结束,而不是在关闭游标时释放。如果有两个会话试图同时更新同一行,后一个会话会等待第...

    数据库触发器的ppt

    【触发器】是数据库系统中一种重要的数据库对象,它与数据表相关联,由特定的事件触发执行。...触发器的应用使得数据库管理系统更加灵活和强大,但也需谨慎使用,避免过度依赖和可能导致的性能问题。

    Oracle数据库学习笔记 三

    Oracle数据库是世界上最流行的数据库管理系统之一,广泛应用于企业级的数据存储和管理。本篇笔记主要探讨了两个关键概念:锁定机制和表分区。 首先,锁定是Oracle数据库中用于控制并发访问和确保数据完整性的核心...

Global site tag (gtag.js) - Google Analytics