2011-07-17 102 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