
首先synchronized不可能做到对某条数据库的数据加锁。它能做到的只是对象锁。 比如数据表table_a中coloum_b的数据是临界数据,也就是你说的要保持一致的数据。你可以定义一个类,该类中定义两个方法read()和write()(注意,所有有关该临界资源的
用select for update wait可以实现, 例如:
BEGIN TRANSACTION;
SELECT ITEM_ID FROM TABLE_ITEM WHERE ITEM_PRIORITY > 10 AND ITEM_CATEGORY = 'CT1'
ITEM_STATUS = 'available' AND ROWNUM = 1 FOR UPDATE WAIT 5;
UPDATE [locked item_id] SET ITEM_STATUS = 'unavailable';
COMMIT TRANSACTION;
安装Oracle 11g会自带一个叫做SQL Developer的工具,打开SQL Developer,
在SQL Developer中我们新建一个连接,点击左上角的“绿色加号”
创建数据库连接,
填写完配置以后可以点击“Test”来测试数据库连接是否正确,如上图所示,左下角有“Status:Success”则表明数据库连接正确。
创建新用户
连接登陆数据库
接着为ORCL这个数据库创建新用户,如下图所示填写用户名和密码,以及为用户指定表空间。如下图所示为用户分配权限
查看创建用户和分配权限所对应的sql代码,如下图所示。
使用新用户创建数据库连接,使用新账户创建数据库连接的方法和第一步类似
可分为如下三类:
1、内部级封锁
内部级封锁是用于保护ORACLE内部结构,由系统内部实现,用户不能访问,因此我们不必对此做过多的了解。
2、DDL级封锁(字典/语法分析封锁)
DDL级封锁也是由ORACLE RDBMS来控制,它用于保护数据字典和数据定义改变时的一致性和完整性。它是系统在对SQL定义语句作语法分析时自动地加锁,无需用户干予。字典/语法分析封锁共分三类:
(1)、字典 *** 作锁:用于对字典 *** 作时,锁住数据字典,此封锁是独占的,从而保护任何一个时刻仅能对一个字典 *** 作。
(2)、字典定义锁:用于防止在进行字典 *** 作时又进行语法分析,这样可以避免在查询字典的同时改动某个表的结构。
(3)、表定义锁:用于 一个SQL语句正当访问某个表时,防止字典中与该表有关的项目被修改。
3、DML级封锁
DML级封锁用于控制并发事务中的数据 *** 纵,保证数据的一致性和完整性,其封锁对象可以是表或行。
对用户的数据 *** 纵,Oracle可以自动为 *** 纵的数据进行封锁,但如果有 *** 纵授权,则为满足并发 *** 纵的需要另外实施封锁。DML封锁可由一个用户进程以显式的方式加锁,也可通过某些SQL语句隐含方式实现。
DML锁有如下三种封锁方式:
(1)、共享封锁方式(SHARE)
(2)、独占封锁方式(EXCLUSIVE)
(3)、共享更新封锁(SHARE UPDATE)
其中SHARE,EXCLUSIVE用于表封锁,SHARE UPDATE用于行封锁。
以上就是关于在java 中 *** 作数据库时,怎么锁表全部的内容,包括:在java 中 *** 作数据库时,怎么锁表、C#我想锁住数据库中的table表中的关键字为001的这条记录,如何锁呢、oracle developer 数据库 如何锁表 而且不可让其他用户访问等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)