2011-07-17 64 views
0

我有一個主表。其主鍵在其他表中用作外鍵。我不能修改其他表的定義,因爲它沒有任何「更新級聯」,我想更改主鍵的值,所以我應該更新其他表... 目前我已經寫了plpgsql, 但因爲我有大量的數據需要處理,不知何故它會降低性能。 有人可以幫助我,如何更新單個查詢中的多個表,或更新不同值的多個行?一次更新多行,每行有不同的值

+0

您是否知道'plpgsql'is的PostgreSQL過程語言,而一個用於Oracle的名字叫做'plsql'?這種混亂可能會解釋爲什麼你永遠不會得到滿意的答案。這是真的嗎? –

回答

0

這裏有一個選項在一個語句來更新多行:

update mytable set 
mycolumn = (case myid when 1 then 'a' when 2 then 'b' ... end) 
where myid in (1, 2, ...); 
+0

我不能這樣做,因爲我將更新數百萬條記錄,我將根據其他列值更新公式。 – shraddha

+0

like update table1 set col1 = col2 where col2 = xvalue; – shraddha

+0

和我應該更新子表。以及 像 更新childtable1設置col1 = col2(我正在採取其中一個plpgsql變量的值)其中col1 = table1.col1 更新childtable2設置col1 = col2(哪個值我正在考慮其中一個plpgsql變量)其中col1 = table1.col1 – shraddha