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