8
我正在从表FOO和BAR中进行选择。我想锁定正在返回的FOO记录,但我不希望BAR的记录被锁定。Oracle使用SELECT锁定...更新
cursor c_foobar is
select foo.*, bar.* from
foo, bar
where foo.id = bar.foo_id
for update of <what should I put here?>
看来我需要指定单个列,但我希望foo的整个记录被锁定。例如我希望我可以这样做:
cursor c_foobar is
select foo.*, bar.* from
foo, bar
where foo.id = bar.foo_id
for update of foo
我必须列举FOO的每一列在for update of
部分,以锁定他们呢?或者我可以任意选择foo中的任何列,即使那些不是它的主键,它会锁定整个记录?
非常好;不知道我是如何错过的。所以我想它只是需要任何行中的任意列名...很容易,但对我来说似乎不是非常直观。 – 2010-06-18 14:43:27
我同意,它不。我似乎还记得很久以前在某个地方读过,指定列的要求是这样的,以至于在将来的某个版本中,Oracle可能只会锁定该行中的特定列。但是我的记忆很朦胧。 – 2010-06-18 14:54:22
这是一种自我记录代码的形式,我认为:“我只打算更新'salary'列'” – 2010-06-19 07:14:14