我需要从另一个表更新一个表,并且需要更新所有列。除了列出SET
子句中的每一列之外,还有没有办法一次更新所有列?像这样:
update tableA
set * = tableB.*
from tableB where tableA.id = tableB.id
我在psql中尝试过,它不起作用。我必须像这样列出每一列:
update tableA
set c1 = tableB.c1, c2 = tableB.c2, ...
from tableB where tableA.id = tableB.id
tableB
被创建使用create .. like tableA
。因此,它们基本上是相同的。我这样做的原因是,我需要将.csv数据加载到临时表中tableB
,然后tableA
根据中的新数据进行更新tableB
。tableA
需要尽可能少地锁定,并且tableA
需要保持完整性。我不确定“先删除然后插入”是否是一个好选择?
1
我测试了您的第二个代码,它可以正常工作!:您应该检查两个主题dba.stackexchange.com/questions/58371/..., dba.stackexchange.com/questions/59458/...
—
六安黄长发