站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题PreparedStatement??

PreparedStatement??

摘要: PreparedStatement??


PreparedStatement pstmt = conn.prepareStatement("select * from name where id= ? for update");

在这个过程中。。有无“for update”,,但“for update”有哈子作用没有??


好像是某个数据库特定的语法,在哪里看见过,是不是SQL Server?


是mysql!!但有没有它结果都一样!


这是加一个锁!


加一个哈子锁》》》?、有哈子作用???感谢!!


在PGSQL, Oralce, MySQL等数据库中,好像都支持Select For update,这个子句本身与Java无关,

看一下PGSQL的解释:
FOR UPDATE 子句

FOR UPDATE 子句有下面的形式

FOR UPDATE [ OF table_name [, ...] ] [ NOWAIT ]

FOR UPDATE 令那些被 SELECT 语句检索出来的行被锁住,就像要更新一样。 这样就避免它们在当前事务结束前被其它事务修改或者删除; 也就是说,其它视图 UPDATE,DELETE, 或者 SELECT FOR UPDATE 这些行的事务将被阻塞, 直到当前事务结束。同样,如果一个来自其它事务的 UPDATE, DELETE,或者 SELECT FOR UPDATE 已经锁住了某个或某些选定的行,SELECT FOR UPDATE 将等到那些事务结束, 并且将随后锁住并返回更新的行(或者不返回行,如果行已经被删除)。

为了避免操作等待其它事务提交,使用 NOWAIT 选项 如果被选择的行不能立即被锁住,那么 SELECT FOR UPDATE NOWAIT 将会立即汇报一个错误, 而不是等待。请注意 NOWAIT 只适用于行级别的锁 — 要求的表锁 ROW SHARE 仍然以通常的方法进行。如果需要申请表级别的锁同时又不等待,那么你可以使用 LOCK 的 NOWAIT 选项。



oracle里面也有阿!
方正是加了一把锁!你把这句话和增,删,改放一起执行就可以看到效果!


↑返回目录
前一篇: mvc三层的疑问?
后一篇: tomcat不能支持servlet??